菜鸟硕枫设计模式系列之16 解释器模式
发布日期:2021-10-01 08:45:12 浏览次数:2 分类:技术文章

本文共 1699 字,大约阅读时间需要 5 分钟。

解释器模式是一种行为模式。主要方法就是形成一个解释语法树,然后根据语法树中的语法规则执行每一个语法字句即可。
解释器模式类图:
[img]http://dl.iteye.com/upload/attachment/364678/71a278dd-fb56-3c94-93fd-3a7137b9ad9b.jpg[/img]
说明:这个类图只是demo的类图示例,真正的解释器还包括测试类中的语法树,然后根据不同的解释器去对context内容进行解释执行。
具体代码示例:
解释器接口:
package interpreterPattern; public interface Interpreter {
void interpret(Context context); }
加法器
package interpreterPattern; public class IncrementInterpreter implements Interpreter{
@Override public void interpret(Context context) {
int value = Integer.valueOf(context.getValue()); value+=50; System.out.println("after Increment operation,value="+value); context.setValue(String.valueOf(value)); } }
减法器:
package interpreterPattern; public class DecrementInterpreter implements Interpreter{
@Override public void interpret(Context context) {
int value = Integer.valueOf(context.getValue()); value-=10; System.out.println("after Decrement operation,value="+value); context.setValue(String.valueOf(value)); } }
上下文环境:
package interpreterPattern; public class Context {
private String value; public void setValue(String value) {
this.value = value; } public String getValue() {
return value; } }
测试类:
package interpreterPattern; import java.util.ArrayList; import java.util.List; public class IntepreterTest {
public static void main(String[]args){
Context context = new Context(); context.setValue("12345"); List
list = new ArrayList
(); //形成语法树 for(int i =0;i<10;i++) {
if(i%3==0) list.add(new DecrementInterpreter()); else list.add(new IncrementInterpreter()); } //解释执行 for(Interpreter interpreter :list){
interpreter.interpret(context); } } }

转载地址:https://blog.csdn.net/iteye_2655/article/details/81970482 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:菜鸟硕枫设计模式系列之17 迭代器模式
下一篇:菜鸟硕枫设计模式系列之15 命令模式

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月01日 22时46分08秒