17. 해석자 패턴(Interpreter Pattern)
해석자 패턴은 사용자가 표현하기 쉬운 표현을 사용하게 하고 이를 해석하는 개체를 통해 약속된 알고리즘을 수행할 수 있게 해 주는 패턴입니다. SQL 쿼리문이나 Command 창에서 프로그램 실행 시 필요한 인자를 전달할 때와 같은 경우 등에서 많이 사용될 수 있는 패턴입니다.
해석자 패턴에서는 사용자가 원하는 다양한 명령을 쉽게 표현할 수 있게 구문 약속을 해야 합니다. 그리고, 해석자에서는 이와 같이 약속된 구문을 입력 인자로 전달되었을 때 이를 해석을 할 수 있어야 합니다. 사용자로부터 전달된 입력 구문은 하나의 표현으로 종결되기도 하지만 여러 개의 표현으로 해석될 수도 있습니다.
가령 "2 Add 3" 과 같은 표현은 피 연산자:2, 연산자:+, 피 연산자:3 으로 해석될 수 있다는 것입니다.
해석자 패턴을 사용하면 사용자가 다양한 명령을 쉬운 표현 방법으로 전달할 수 있습니다. 하지만, 너무 많은 명령에 대한 조합에 대해 해석자 패턴을 적용하려고 한다면 정규화 과정에 들어가는 비용이 기하급수적으로 커질 수 있습니다. 비교적 사용자가 표현식의 문법을 단순화할 수 있는 경우에는 효과적일 수 있지만 그렇지 않다면 다른 방법을 사용하는 것이 나을 수 있습니다.
2016/04/28 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#] 해석자 패턴(Interpreter Pattern) - 개요, 시나리오
2016/04/28 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#] 해석자 패턴(Interpreter Pattern) - 설계(Design)
2016/04/28 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#] 해석자 패턴(Interpreter Pattern) - 구현
'프로그래밍 기술 > Escort GoF의 디자인 패턴 C#' 카테고리의 다른 글
[소프트웨어 패턴 C#] 22. 상태 패턴(State Pattern) (0) | 2016.04.17 |
---|---|
[소프트웨어 패턴 C#] 21.감시자 패턴(Observer Pattern) (0) | 2016.04.17 |
[소프트웨어 패턴 C#] 20. 메멘토 패턴 (Memento Pattern) (0) | 2016.04.17 |
[소프트웨어 패턴 C#] 19. 중재자 패턴 (Mediator Pattern) (0) | 2016.04.17 |
[소프트웨어 설계 패턴 C#] 18. 반복자 패턴(Iterator Pattern) (0) | 2016.04.17 |
[소프트웨어 설계 패턴 C#] 16. 명령 패턴 (Command Pattern) (0) | 2016.04.17 |
[소프트웨어 설계 패턴 C#] 책임 연쇄 패턴(Chain of Responsibility Pattern) (0) | 2016.04.17 |
[소프트웨어 설계 패턴 C#] 14. 프락시 패턴 (Proxy Pattern) - 보호용 프락시 (0) | 2016.04.17 |
[소프트웨어 설계 패턴 C#] 13. 프락시 패턴 (Proxy Pattern) - 가상 프락시 (0) | 2016.04.17 |
[소프트웨어 설계 패턴 C#] 12. 프락시 패턴(Proxy Pattern) - 원격지 프락시 (0) | 2016.04.17 |