2022-05-12-인터프리터패턴-3부-장점과단점
본문 바로가기
CS Study/디자인패턴

2022-05-12-인터프리터패턴-3부-장점과단점

by KyeongMin 2022. 5. 13.
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가 복잡해짐

 

https://github.com/3DPIT/3dpit.github.io/blob/main/content/blog/DesignPattern/2022-05-12-%EC%9D%B8%ED%84%B0%ED%94%84%EB%A6%AC%ED%84%B0%ED%8C%A8%ED%84%B4-3%EB%B6%80-%EC%9E%A5%EC%A0%90%EA%B3%BC%EB%8B%A8%EC%A0%90.md

 

GitHub - 3DPIT/3dpit.github.io

Contribute to 3DPIT/3dpit.github.io development by creating an account on GitHub.

github.com

 

728x90
반응형

댓글