java设计模式18_解释器模式
2017-06-07 09:37
513 查看
解释器模式
解释器模式提供了一种评估计算语言语法或表达式的方法,此模式用于SQL解析,符号处理引擎等实现
创建一个接口Expression并且在具体的类实现这个Expression接口。 定义了一个TerminalExpression类,用作所讨论的上下文的主解释器。 其他的类 - OrExpression和AndExpression用于创建组合表达式代码
package com.test; //第1步,创建表达式接口 interface Expression { public boolean interpret(String context); } // 第2步, 创建实现上述接口的具体类 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; } } 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); } } 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); } } // 第3步,使用Expression类来创建规则,然后解析它们 public class Test { 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 Julise")); } // Rule: Robert and John are male public static Expression getMaleExpression() { Expression robert = new TerminalExpression("Robert"); Expression john = new TerminalExpression("John"); return new OrExpression(robert, john); } // Rule: Julie is a married women public static Expression getMarriedWomanExpression() { Expression julie = new TerminalExpression("Julie"); Expression married = new TerminalExpression("Married"); return new AndExpression(julie, married); } }
运行结果:
John is male? true Julie is a married women? false
相关文章推荐
- JAVA设计模式(18) —适配器(Adapter)模式
- Java开发中的23种设计模式之二十三:解释器模式(Interpreter)
- JAVA 设计模式 解释器模式
- Java设计模式-解释器模式(Interpreter)
- JAVA设计模式(十五)——解释器模式
- java设计模式——解释器模式
- java设计模式_解释器模式
- Java设计模式(18)策略模式(Strategy模式)
- JAVA设计模式(18):行为型-状态模式(State)
- Java设计模式之十七(解释器模式)
- java设计模式23——解释器模式(Interpreter)
- java设计模式(三)——模板、访问者、组合、解释器、迭代器、中介者
- 设计模式学习笔记--解释器模式Interpreter与访问者模式Visitor(Java版)
- java设计模式-解释器模式(Interpreter)
- JAVA设计模式十五:--Interpreter(解释器模式)
- Java私塾:研磨设计模式 之 解释器模式(Interpreter)3
- java设计模式18——命令模式(Command)
- JAVA设计模式之解释器模式详解
- 深入浅出基于Java的解释器设计模式