인터프리터 패턴(Interpreter Pattern)은 특정 언어의 문법(문장, 표현식)을 정의하고, 그 언어로 작성된 문장을 해석(평가)하는 엔진을 만드는 행위 패턴입니다.
정규표현식 엔진이나, SQL 파서, 혹은 컴파일러 내부에서 사용됩니다. 문법 규칙을 추상 구문 트리(AST, Abstract Syntax Tree) 형태의 클래스 계층으로 모델링하여 해석합니다. 성능 이슈와 복잡성 때문에 실무에서 직접 웹 개발에 쓰이는 경우는 거의 없지만, DSL(Domain Specific Language)을 만들 때 핵심적인 역할을 합니다.
📐 Interpreter Pattern UML
인터프리터 패턴은 언어의 문법을 정의하고 그 언어로 작성된 문장을 해석하는 방법을 제공합니다.
class Context {
constructor(input) { this.input = input; this.output = 0; }
}
class Expression {
interpret(context) { throw new Error("구현 필요"); }
}
class TerminalExpression extends Expression {
interpret(context) {
if (context.input.includes("A")) context.output += 1;
if (context.input.includes("B")) context.output += 2;
}
}
const context = new Context("A B");
const exp = new TerminalExpression();
exp.interpret(context);
console.log("결과:", context.output);