[java] 인터프리터 패턴
인터프리터 패턴은 소프트웨어 엔지니어링에서 사용되는 디자인 패턴 중 하나입니다. 이 패턴은 언어 해석기를 만드는 데 사용됩니다. 인터프리터 패턴은 간단한 문법을 사용하여 복잡한 언어를 해석하고 실행하는 데 사용됩니다.
인터프리터 패턴의 구성 요소
인터프리터 패턴은 일반적으로 다음과 같은 구성 요소로 이루어집니다:
- 표현식 (Expression): 해석하고자 하는 언어의 표현식을 나타내는 클래스입니다.
- 터미널 표현식 (Terminal Expression): 최소 단위의 표현식을 나타내는 클래스입니다.
- 비터미널 표현식 (Non-terminal Expression): 여러 개의 터미널 표현식을 조합하여 복잡한 표현식을 나타내는 클래스입니다.
- 해석기 (Interpreter): 표현식을 분석하고 실행하는 클래스입니다.
인터프리터 패턴의 예제
아래는 간단한 인터프리터 패턴의 예제입니다. 이 예제에서는 간단한 수학식을 해석하고 계산하는 인터프리터를 구현합니다.
public interface Expression {
int interpret();
}
public class NumberExpression implements Expression {
private int number;
public NumberExpression(int number) {
this.number = number;
}
public int interpret() {
return number;
}
}
public class AddExpression implements Expression {
private Expression leftExpression;
private Expression rightExpression;
public AddExpression(Expression leftExpression, Expression rightExpression) {
this.leftExpression = leftExpression;
this.rightExpression = rightExpression;
}
public int interpret() {
return leftExpression.interpret() + rightExpression.interpret();
}
}
public class Interpreter {
public static void main(String[] args) {
Expression expression = new AddExpression(new NumberExpression(5), new NumberExpression(10));
System.out.println(expression.interpret());
}
}
위 예제에서는 Expression
인터페이스를 정의하고, 이를 구현하는 NumberExpression
과 AddExpression
클래스를 만들어 간단한 수식을 해석하고 계산하는 인터프리터를 구현합니다.
결론
인터프리터 패턴은 언어나 문법을 해석하고 실행하는 데 유용한 디자인 패턴입니다. 이 패턴을 사용하면 간단한 문법을 사용하여 복잡한 언어를 처리할 수 있으며, 예외적인 경우에 유용하게 활용될 수 있습니다.