java设计模式----解释器模式 weir 2015-04-20 10:00:47.0 java,设计模式 1204 用简单的一句话概括就是:我的程序我做主。 再通俗一点就是根据自己对现实世界的理解,制定规则,然后把这种规则用虚拟世界的代码来完成。我觉得我们的一切虚拟世界的行为规则都是根据我们人定义出来的游戏规则来完成的,要不然世界上哪里会有这么多程序语言。起了个好听的名字解释器模式,牵强附会。 这玩意最典型的例子就是xml的解析,这就告诉我们 我们可以制定xml的各个节点。再引申一下这个问题,xml文件可以做什么,这种格式的文件具备通用性和可扩展性,说白了就是一棵参天大树,灵活多变而不是整体结构。比如说我们想做一个能自动生成代码的一个工具,xml是不是一个很好的选择。(瞧我多聪明,偷偷的告诉你,早有人这么做了) package com.weir.interpreter; /** * 上下文,一些全局性的东西 * @author Administrator * */ public class Context { } package com.weir.interpreter; /** * 抽象的表达式 * @author Administrator * */ public abstract class Expression { public abstract void interpret(Context context); } package com.weir.interpreter; /** * 解释器A * @author Administrator * */ public class AExpression extends Expression{ @Override public void interpret(Context context) { System.out.println("A"); } } package com.weir.interpreter; /** * 解释器B * @author Administrator * */ public class BExpression extends Expression{ @Override public void interpret(Context context) { System.out.println("B"); } } package com.weir.interpreter; public class Client { public static void main(String[] args) { //上下文里面可以传进来xml文件,在解析一下 Context c = new Context(); //就用来解析xml的根据自己定义的语法规则 AExpression exA = new AExpression(); BExpression exB = new BExpression(); //这个地方可以把结果返回出来,就是我们想要的 exA.interpret(c); exB.interpret(c); } } 这里面难的不是架子怎么搭的问题,二是架子里面怎么实现的问题,这样的设计模式:模式简单内容复杂,玩的不是你会不会架子而是架子里面你怎么实现的问题。那就看你的造化了。