본문 바로가기

프로그래밍 강의 메모/코딩으로 학습하는 GoF의 디자인 패턴_백기선

행동 관련 디자인 패턴 > 인터프리터 패턴(Interpreter Pattern)

https://inf.run/6Shr

 

코딩으로 학습하는 GoF의 디자인 패턴 - 인프런 | 강의

디자인 패턴을 알고 있다면 스프링 뿐 아니라 여러 다양한 기술 및 프로그래밍 언어도 보다 쉽게 학습할 수 있습니다. 또한, 보다 유연하고 재사용성이 뛰어난 객체 지향 소프트웨어를 개발할

www.inflearn.com

 

 

인터프리터 패턴

  • 행동 관련 디자인 패턴.
  • 자주 등장하는 문제를 간단한 언어로 정의하고 재사용하는 패턴.
  • 반복되는 문제 패턴을 언어 또는 문법으로 정의하고 확장할 수 있다.
  • 정규 표현식이 이 패턴으로 구현되었다.

 

 



Context는 모든 Expression에서 사용하는 공통된 정보가 들어가 있다.

글로벌한 값들이 모여있는 곳이다.

Expression에서 이 값들을 참조한다.

 

TerminalExpression은 그 자체로 종료되는 Expression.

NonTerminalExpression같은 경우 다른 Expression을 참조하고 있는 Expression이다.

종료가 되지 않고 다른 Expression들을 Interpret 해봐야 그 결과를 알 수 있다.

NonTerminalExpression은 또 다른 NonTerminalExpression을 참조할 수도 있고 아니면 TerminalExpression을 참조할 수도 있다.

 

 

인터프리터 패턴의 장점

1. 자주 등장하는 문제 패턴을 언어와 문법으로 정의할 수 있다.

2. 기존 코드를 변경하지 않고 새로운 익스프레션을 추가할 수 있다.

 

인터프리터 패턴의 단점

복잡한 문법을 표현하려면 Expression과 Parser가 복잡해진다.

그러므로 문법으로 구현하는데 필요한 비용과 얼마나 자주 사용하게 될 것 같은지 비교하여 판단해야 한다.