Interpreter Pattern
一般用于语言和文法处理的设计模式
ref: 解释器模式 | 菜鸟教程
- Expression 表示了对语句的文法验证操作,相互可以嵌套。相互嵌套的过程表示了文法之间的逻辑关系
- 实现 interpreter() ,表示对语句的处理
public interface Expression {
public boolean interpret(String context);
}
- 核心为 interpret() 方法,传入的 context 表示待处理的语句上下文
public 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;
}
}
public class InterpreterPatternDemo {
//规则:Robert 和 John 是男性
public static Expression getMaleExpression(){
Expression robert = new TerminalExpression("Robert");
Expression john = new TerminalExpression("John");
return new OrExpression(robert, john);
}
//规则:Julie 是一个已婚的女性
public static Expression getMarriedWomanExpression(){
Expression julie = new TerminalExpression("Julie");
Expression married = new TerminalExpression("Married");
return new AndExpression(julie, married);
}
public static void main(String[] args) {
Expression isMale = getMaleExpression();
Expression isMarriedWoman = getMarriedWomanExpression();
System.out.println("John is male? " + isMale.interpret("John"));
System.out.println("Julie is a married women? "
+ isMarriedWoman.interpret("Married Julie"));
}
}