菜鸟硕枫设计模式系列之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"); Listlist = 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月01日 22时46分08秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
LeetCode题解(1407):排名靠前的旅行者(SQL)
2019-04-26
LeetCode题解(1412):查找成绩处于中游的学生(SQL)
2019-04-26
LeetCode题解(1421):净现值查询(SQL)
2019-04-26
LeetCode题解(1435):制作会话柱状图(SQL)
2019-04-26
LeetCode题解(1440):计算布尔表达式的值(SQL)
2019-04-26
文件服务器实现基本条件!
2019-04-26
文件服务器-活动目录的讨论
2019-04-26
文件服务器-活动目录的安装
2019-04-26
文件服务器-OU的概念!
2019-04-26
XP HOME 版本的 限制!
2019-04-26
VISTA版本!
2019-04-26
VMware GSX3.2 安装WINDOWS 2008!(1)
2019-04-26
VMware GSX3.2 安装WINDOWS 2008!(2)
2019-04-26
OE问题解决一例!
2019-04-26
利用LDIFDE,CSVDE 批量导出用户!
2019-04-26
ArcServer 无法正常启动,卸载IE7.0!
2019-04-26
为我加油吧-CTO 冲!
2019-04-26
【Linux】Linux中at命令详解
2019-04-26
[【Android】Android之ContentProvider总结
2019-04-26
【Android】Android中ContentProvider组件详解
2019-04-26