728x90
반응형
01.인터피리터패턴 장단점
- 요청을 캡슐화 하여 호출자(invoker)와 수신자(receiver)를 분리하는 패턴
01.1 장점
- 자주 등장하는 문제 패턴을 언어와 문법으로 정의할 수 있음
- 기존 코드를 변경하지 않고 새로운 Expression을 추가할 수 있음
- 곱을 만들고 싶은 경우
- 사실 이렇게 만드는 것 보다 인터페이스에 추가하는게 더 쉽긴함
- 하지만 이렇게 하면 parser는 영향을 받게되어 *를 추가해야하긴함
- 추가할때 다른것을 건들지 않고, 확장이 가능하고 단일책임원칙도 지킴
static PostfixExpression multiply(PostfixExpression left, PostfixExpression right){ return context -> left.interpret(context) * right.interpret(context); }
- 사실 이렇게 만드는 것 보다 인터페이스에 추가하는게 더 쉽긴함
-
public class MultiplyExpression implements PostfixExpression{ private PostfixExpression left, right; public MultiplyExpression(PostfixExpression left, PostfixExpression right) { this.left = left; this.right = right; } @Override public int interpret(Map<Character, Integer> context) { return left.interpret(context) * right.interpret(context); } }
- 곱을 만들고 싶은 경우
01.2 단점
- 복잡한 문법을 표현하려면 Expression과 Parser가 복잡해짐
728x90
반응형
'CS Study > 디자인패턴' 카테고리의 다른 글
2022-07-07-이터레이터패턴-2부-패턴적용하기 (0) | 2022.07.18 |
---|---|
2022-07-07-이터레이터패턴-1부-패턴소개 (0) | 2022.07.18 |
2022-05-12-인터프리터패턴-2부-패턴적용하기 (0) | 2022.05.13 |
2022-05-12-인터프리터패턴-1부-패턴소개 (0) | 2022.05.12 |
2022-05-11-커맨드패턴-3부-장점과단점 (0) | 2022.05.12 |
댓글