[译]Java设计模式之解释器】的更多相关文章

(文章翻译自Java Design Pattern: Interpreter) 解释器模式适用于当一些内容需要翻译的时候.下面的例子是一个非常简单的解释器实现.它将字母"a"和"b"翻译成"1"和"2". 类图: 注意:为了使结构更加清晰依赖关系也在图中显示出来了. Java 代码 class Context { private String input; private String output; public Conte…
解释器模式 解释器模式是类的行为模式.给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器.客户端可以使用这个解释器来解释这个语言中的句子. 意图 给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子. 主要解决 对于一些固定文法构建一个解释句子的解释器. 何时使用 如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子.这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题. 如何解…
解释器模式 解释器模式是类的行为模式.给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器.客户端可以使用这个解释器来解释这个语言中的句子. 意图 给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子. 主要解决 对于一些固定文法构建一个解释句子的解释器. 何时使用 如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子.这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题. 如何解…
在阎宏博士的<JAVA与模式>一书中开头是这样描述解释器(Interpreter)模式的: 解释器模式是类的行为模式.给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器.客户端可以使用这个解释器来解释这个语言中的句子. 解释器模式的结构 下面就以一个示意性的系统为例,讨论解释器模式的结构.系统的结构图如下所示: 模式所涉及的角色如下所示: (1)抽象表达式(Expression)角色:声明一个所有的具体表达式角色都需要实现的抽象接口.这个接口主要是一个interpre…
(文章翻译自Java Design Pattern: Singleton) 单例是在Java最经常被用到的设计模式.它通过阻止其他的实例化和修改来用于控制创建对象的数目.这一特性可应用于那些当只有一个对象存在时能够更加有效的系统,或者是限制对象的实例化数目,比如: 1.私有化构造器(private constructor -)-没有其他的类可以实现化一个新的对象 2.私有化引用(private reference -)-没有其他的修改 3.公共的静态方法(public static method…
(文章翻译自Java Design Pattern: Bridge) 简单来说,桥梁设计模式是一个两层的抽象. 桥接模式就是从一个抽象中实现中解耦以便两个都可以独立的改变.桥接使用封装聚合而且使用继承将职责分配到不同的类中. ###1.桥接的来历 下面TV和远程控制的例子能够演示两层的抽象.你可以有一个针对TV的接口而且一有个对于远程控制的抽象类.你知道的,这不是一个好的做法去针对他们的每一个的具体类,因为其他的(vendors )供应商能够提供不同的实现. 2.桥接模式Java代码 首先定义T…
(文章翻译自Java Design Pattern: Decorator – Decorate your girlfriend) 1.装饰模式的来历 让我们假设你在寻找一个女朋友.有来自像没美国中国日本法国等等的不同国家的女孩.她们有不同的习惯和个性.在一个像eharmony.com的约会网站,如果每个类型的女孩都是一个独立的Java类,这样就会有成千上万个类.这样就会导致一个严重的叫做类爆炸的问题.还有就是这个设计不同扩展的.不管在任何时候只要有一个心的女孩类型,一个新的类就需要被创建. 让我…
(文章翻译自Java Design Pattern: Template Method) 模板方法设计模式定义了归档特定操作的工作流.它允许子类去修改特定的步奏而不用改变工作流的结构. 下面的例子表示模板方法模式是怎么工作的. 类图 Java 代码 Vehicle:java定义了一个小型车并且使其可以运作. package com.programcreek.designpatterns.templatemethod; abstract public class Vehicle { //set to…
(文章翻译自Java Design Pattern: Factory) 1.Java工厂模式的来历 工厂设计模式用于创建基于不同参数的对象.下面的例子就是在一个工厂里创建一个人.如果我们向工厂要一个boy,工厂就会生产一个boy;如果我们向工厂要一个girl,工厂就会生产一个girl.基于这些不同的参数,工厂就会生产不同的东西. 2.工厂模式类图 3.工厂模式Java代码 interface Human { public void Talk(); public void Walk(); } cl…
(文章翻译自Java Design Pattern: Facade) 外观设计模式隐藏了任务的复杂性而只是提供了一个简单的接口.一个非常好的例子就是计算机的启动.当一个计算机启动的时候,它涉及CUP.内存 .硬件驱动等等的工作.为了更容易让用户去使用,我们我提供了一个封装任务的复杂性的外观方式,提供了一个简单的接口用来替代. 1.外观模式类图 2.Java外观模式例子 //the components of a computer class CPU { public void processDa…