标签:
定义:给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子。
类型:行为类模式
类图:
解释器模式是一个比较少用的模式,本人之前也没有用过这个模式。下面我们就来一起看一下解释器模式。
解释器模式的结构
代码实现
package com.example.zztest.jieshi.express;
//抽象表达式
public abstract class AbstractExpression {
public abstract void Interpret(MyContext con);
}
package com.example.zztest.jieshi.express;
//终结符表达式
public class TerminalExpression extends AbstractExpression{
public void Interpret(MyContext con) {
// TODO Auto-generated method stub
System.out.println("终端解释器");
}
}
package com.example.zztest.jieshi.express;
//非终结符表达式
public class NonTerminalExpression extends AbstractExpression{
@Override
public void Interpret(MyContext con) {
// TODO Auto-generated method stub
System.out.println("no终端解释器");
}
}
package com.example.zztest.jieshi.express;
public class MyContext {
private String input;
private String output;
public String getInput() {
return input;
}
public void setInput(String input) {
this.input = input;
}
public String getOutput() {
return output;
}
public void setOutput(String output) {
this.output = output;
}
}
调用测试:
package com.example.zztest.jieshi.express;
import java.util.ArrayList;
import java.util.List;
public class ExpClient {
public static void test(){
MyContext myc=new MyContext();
List<AbstractExpression> list=new ArrayList<AbstractExpression>();
list.add(new TerminalExpression());
list.add(new NonTerminalExpression());
list.add(new TerminalExpression());
list.add(new TerminalExpression());
for(int i=0;i<list.size();i++){
list.get(i).Interpret(myc);
}
}
}
标签:
原文地址:http://www.cnblogs.com/manmanlu/p/5810200.html