【設計模式】直譯器模式
阿新 • • 發佈:2018-12-25
模式定義
直譯器模式為語言建立直譯器,對於特定的計算機程式設計語言,用來解釋預先定義的文法。簡單地說,直譯器模式是一種簡單的語法直譯器構架。
下圖是該模式的類圖:
一個生動的例子
Expression介面:
public interface Expression {
boolean interpret(String context);
}
TerminalExpression類:
class TerminalExpression implements Expression {
private String data;
public TerminalExpression (String data) {
this.data = data;
}
@Override
public boolean interpret(String context) {
if (context.contains(data)) {
return true;
}
return false;
}
}
Expression實現類:
class OrExpression implements Expression {
private Expression expr1 = null;
private Expression expr2 = null;
public OrExpression(Expression expr1, Expression expr2) {
this.expr1 = expr1;
this.expr2 = expr2;
}
@Override
public boolean interpret(String context) {
return expr1.interpret(context) || expr2.interpret(context);
}
}
Expression實現類:
class AndExpression implements Expression {
private Expression expr1 = null;
private Expression expr2 = null;
public AndExpression(Expression expr1, Expression expr2) {
this.expr1 = expr1;
this.expr2 = expr2;
}
@Override
public boolean interpret(String context) {
return expr1.interpret(context) && expr2.interpret(context);
}
}
測試類/客戶端類:
public class InterpreterTest {
public static void main(String[] args) {
Expression robert = new TerminalExpression("Robert");
Expression john = new TerminalExpression("John");
System.out.println(new OrExpression(robert, john).interpret("John"));
System.out.println(new AndExpression(robert, john).interpret("John is Robert"));
}
}
參考
- Head First 設計模式[書籍]
- 菜鳥教程之直譯器模式
- 百度百科之直譯器模式