인터프리터 패턴은 자주 등장하는 문제를 간단한 언어로 정의하고 재사용하는 패턴이다. 인터프리터 패턴을 사용하면 반복되는 문제 패턴을 언어 또는 문법으로 정의하고 확장할 수 있다. 쉽게 말하면, 일정한 형식을 갖춘 텍스트(String)를 해석해서 규칙에 맞는 로직을 실행할 수 있도록 하는 것이다.
어떤 용도로, 어떤 언어를 구현하는지에 따라 정말 다양한 코드가 나올 수 있지만, 보통 명령을 입력받아 해석하는 Parser와 그것을 바탕으로 로직을 실행하는 Expression으로 나뉜다.
예시 코드
항이 2개인 간단한 덧셈, 뺄셈 식 계산을 인터프리터 패턴으로 구현했다.
public interface Expression {
Integer interpret ( String context ) ;
public class PlusExpression implements Expression {
public Integer interpret ( String context ) {
if ( context . contains ( " + " ) ) {
String [] split = context . split ( " \\ + " , 2 ) ;
return Integer . parseInt ( split[ 0 ] ) + Integer . parseInt ( split[ 1 ] ) ;
public class MinusExpression implements Expression {
public Integer interpret ( String context ) {
if ( context . contains ( " - " ) ) {
String [] split = context . split ( " - " , 2 ) ;
return Integer . parseInt ( split[ 0 ] ) - Integer . parseInt ( split[ 1 ] ) ;
public static void main ( String [] args ) {
PlusExpression plusExpression = new PlusExpression () ;
MinusExpression minusExpression = new MinusExpression () ;
System . out . println ( " 1 + 2 = " + plusExpression . interpret ( " 1+2 " )) ;
System . out . println ( " 3 - 2 = " + minusExpression . interpret ( " 3-2 " )) ;
이 링크 로 가면 코드를 볼 수 있다.