1. 程式人生 > >【設計模式】直譯器模式

【設計模式】直譯器模式

模式定義

直譯器模式為語言建立直譯器,對於特定的計算機程式設計語言,用來解釋預先定義的文法。簡單地說,直譯器模式是一種簡單的語法直譯器構架。

下圖是該模式的類圖:
直譯器模式類圖

一個生動的例子

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"));
	}
}

參考

  1. Head First 設計模式[書籍]
  2. 菜鳥教程之直譯器模式
  3. 百度百科之直譯器模式