디자인 패턴 - 인터프리터 패턴(Interpreter pattern)

문자열을 읽어서 이를 문법 구조로 표현하는 객체 집합인 추상 구문 트리로 만든다.
이런 추상 구문 트리를 만드는 데에서 끝나지 않고 이를 실행한다.

표현식 혹은 하위표현식 객체로 트리를 만들고, 진짜 객체지향 방식으로 표현식이 자신을 평가하게 한다.


  • 문법규칙을 클래스로 표현한 구조
  • 도메인 특화 언어를 사용하기 위한 디자인 패턴
  • 특화 언어는 범용 언어보다 고속으로 처리될 수 있다.
  • 보통 각각의 심볼에 대한 클래스를 가진다.
  • 특화 언어의 예: SQL, 통신프로토콜 언어 등


단점 
  • 코드를 로딩하면서 작은 객체를 많이 만들고 연결
  • 객체와 객체를 잇는 포인터가 많은 메모리를 소모
  • 포인터를 따라 하위표현식에 접근해야 하기 때문에 데이터 캐시에 치명적. 동시에 가상 메서드를 호출하는 것은 명령어 캐시에 치명적.
  • 결론적으로, 느리다.

댓글

이 블로그의 인기 게시물

디자인 패턴 - 더티 플래그(Dirty flag)

디자인 패턴 - 서비스 중개자 패턴(Service locator pattern)

인공지능 - 유한 상태 기계(Finite state machine)