解释器模式
一. 解释器模式
1.1 定义
- 给定一种语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子.
1.2 角色
- 抽象表达式接口(IExpression).
- 终结符表达式(TerminalExpression).
- 非终结符表达式(NonterminalExpression).
- 上下文环境(Context).
二. 具体实现
1.1 创建抽象接口
public interface IExpression {
void interpreter();
}
1.2 创建终结符表达式
public class TerminalExpression implements IExpression {
@Override
public void interpreter() {
System.out.println("TerminalExpression interpreter ...");
}
}
1.3 创建非终结符表达式
public class NonterminalExpression implements IExpression {
private TerminalExpression terminalExpressionA, terminalExpressionB;
public NonterminalExpression(TerminalExpression terminalExpressionA, TerminalExpression terminalExpressionB){
this.terminalExpressionA = terminalExpressionA;
this.terminalExpressionB = terminalExpressionB;
}
@Override
public void interpreter() {
terminalExpressionA.interpreter();
terminalExpressionB.interpreter();
System.out.println("interpreter terminalExpressionA AND terminalExpressionB ...");
}
}
1.4 调用
public static void main(String[] args) {
TerminalExpression expressionA = new TerminalExpression();
TerminalExpression expressionB = new TerminalExpression();
IExpression expression = new NonterminalExpression(expressionA, expressionB);
expression.interpreter();
}
1.5 输出
TerminalExpression interpreter ...
TerminalExpression interpreter ...
interpreter terminalExpressionA AND terminalExpressionB ...
三. 优缺点
3.1 优点
- 灵活性强.
- 扩展性强.
3.2 缺点
- 每个文法对应一个表达式类,类泛滥.
- 复杂文法较难实现.
四. 源码
https://github.com/Seasons20/DisignPattern.git
END
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。