카테고리 없음

[디자인패턴] 인터프리터패턴(Interpreter Pattern) 이란?

개발자 배찌 2022. 4. 13. 13:54
728x90

😀인터프리터 패턴

- 행동패턴으로, 특정 표현이나 언어로 바꿔주는 표현 인터페이스를 사용하는 패턴.

- 문법 규칙을 클래스화 한 구조로, 일련의 규칙으로 정의된 문법적 언어를 해석하는 패턴.

- sql과 같은 계층적 언어를 해석하기 위해 계층구조를 표현할 수 있음.

 

 

😀코드로 알아보기!!

Expression.java

package study.InterpreterPattern.code0;

public interface Expression {
    boolean interprete(String context);
}

 

MinusExpression.java

package study.InterpreterPattern.code0;

public class MinusExpression implements Expression{

    String data = "-";

    @Override
    public boolean interprete(String context) {
        if(context.contains(data)){
            return true;
        } else {
            return false;
        }
    }
}

 

PlusExpression.java

package study.InterpreterPattern.code0;

public class PlusExpression implements Expression{

    String data = "+";

    @Override
    public boolean interprete(String context) {
        if(context.contains(data)){
            return true;
        } else {
            return false;
        }
    }
}

 

InterpreterPatternTest.java

package study.InterpreterPattern;

import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import study.InterpreterPattern.code0.Expression;
import study.InterpreterPattern.code0.MinusExpression;
import study.InterpreterPattern.code0.PlusExpression;

@Slf4j
public class InterpreterPatternTest {

    @Test
    void code0test(){
        Expression plusExpression = new PlusExpression();
        Expression minusExpression = new MinusExpression();

        log.info("result1 :: " + plusExpression.interprete("3+1"));
        log.info("result2 :: " + plusExpression.interprete("3-1"));

        log.info("result3 :: " + minusExpression.interprete("3+1"));
        log.info("result4 :: " + minusExpression.interprete("3-1"));


    }
}

 

결과화면

result1 :: true
result2 :: false
result3 :: false
result4 :: true