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