【设计模式】解释器模式

版权声明:转载请注明出处: https://blog.csdn.net/qq_21687635/article/details/85163357

模式定义

解释器模式为语言创建解释器,对于特定的计算机程序设计语言,用来解释预先定义的文法。简单地说,解释器模式是一种简单的语法解释器构架。

下图是该模式的类图:
解释器模式类图

一个生动的例子

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. 百度百科之解释器模式

猜你喜欢

转载自blog.csdn.net/qq_21687635/article/details/85163357
今日推荐