DesignPattern
钛合金编程
静以修身,俭以养德!The greatest thing is, at any moment, to be willing to give up who we are in order to become all that we can be.
展开
-
组合模式(Composite Pattern)
像一个树形结构一样使用基本的对象和自己本身构建一个复杂的对象,称为组合模式。 这种模式很容易学习以及应用到某个系统中。组合模式属于结构设计模式之一,比较常用。经典的UML图如下: 一个简单的实例程序来说明组合模式是如何实现的。定义一个Employee类,充当组合模式中的表演者,CompositePatternDemo作为测试类。public class Empl原创 2013-05-15 15:29:12 · 1359 阅读 · 0 评论 -
访问者模式(Visitor Pattern)
在访问者模式中,我们使用一个能够改变一个元素类执行算法的类。通过这种方法,元素的执行算法随着访问者的不同而不同。这种模式归属于行为型模式范畴。每个这样的模式,元素对象不得不接受访问者对象,以便于访问者对象能够处理在这个元素上的操作。 为了更好的阐述这个观念,我用一个实例来表达这个思想。 我创建了一个接口ComputePart,这个接口能接受Keyboard,Mouse,Moni原创 2014-02-15 23:45:39 · 1298 阅读 · 0 评论 -
状态模式(State Pattern)
在状态模式中,一个类的行为基于它的状态的改变而改变。状态模式归属于行为型模式。 在下面的实例中,我们创建了一个接口State,定义了一个操作方法,两个实现类StartState和StopState。另外,创建了一个上下文类Context,这个类关联到State类。UML类图如下所示: 状态类Statepublic interface State { pub原创 2014-02-15 23:35:08 · 1183 阅读 · 0 评论 -
迭代模式(Iterator Pattern)
在Java和.net编程环境下,迭代模式是非常普通使用的设计模式。这个设计模式能够以序列化的方式访问一个集合对象的元素,并且没有必要知道它内部的实现。迭代模式属于行为型模式之一,在使用中也是很常见的。 在这个实例中,我们定义了接口Iterator和Container。具体的类NameRespository实现Container接口,它负责实现Iterator接口和使用它。UML图如下所示原创 2014-02-15 23:10:11 · 1564 阅读 · 0 评论 -
备忘录模式(Memento Pattern)
保存一个对象的某个状态,以便在适当的时候恢复对象的先前状态。编辑器中的redo和undo操作一样,所实现的就是备忘录模式。备忘录模式归属于行为型模式。 在下面的实例中,类Memento定义了备忘录的基本信息,类Originator创建我存储备忘录类对象信息,类Caretaker对象负责存储来自备忘录的对象状态。下面总共创建了3个类,Memento, Originator 和 CareTa原创 2014-02-15 23:25:50 · 1496 阅读 · 0 评论 -
策略模式(Strategy Pattern)
策略模式是属于行为型模式之一。当我们对一个具体的作业有多个算法可以调用时,策略模式使客户端用户决定实际上运行实现那个算法。如果使用过MessageDigest.getInstance(String algorithm)这个方法获取一个MessageDigest对象的朋友,你可知道,这个就是一个标准的策略模式。根据algorithm算法名称来知道要调用那个算法,最后得到得到MessageDi原创 2014-02-13 14:43:31 · 1606 阅读 · 0 评论 -
解释器模式(Interpreter Pattern)
解释器模式提供方法来解释语言语法或者表达式,这种模式类型归属于行为型模式。这个模式涉及到实现一个表达式接口,这个接口解释一个特殊的上下文。这种模式被用在SQL解析上,符号处理引擎等。在下面的这个实例中,我将创建一个接口Expression和它的具体实现类。一个类TerminalExpression充当请求中上下文的一个主解释器,其它的类OrExpression和AndExpression用原创 2014-02-15 22:26:58 · 1743 阅读 · 0 评论 -
模板方法模式(Template Method Pattern)
在模板方法模式中,一个抽象类定义模板方法,然后才本身不可覆盖的方法中调用这些模板方法。实现类继承这个抽象类,覆盖原来的需要重新定义业务逻辑的模板方法。这个模式属于行为型模式之一,也是比较常用的设计模式之一。实例实现,定义一个抽象类Game,分别定义其继承类Cricket和Football。UML类图如下所示: Game.javapublic abstract clas原创 2014-02-15 22:45:29 · 1246 阅读 · 0 评论 -
观察者模式(Observer Pattern)
在对象关系间定义了一个一对多的依赖关系,当一个对象改变状态时,以便于它的依赖对象能够被自动化地被告知和更新。观察者模式是属于行为型模式之一。一个对象(object)观察观察状态的改变而做出相应的反应,这个成为Oberver;相对应的,被观察者就称之为Subject。 Java提供了通过 java.util.Observable 类和 java.util.Observer接口实现观察者模式原创 2014-02-15 23:04:17 · 1631 阅读 · 0 评论 -
原型模式(prototype pattern)
通过克隆对象来创建一个新的对象叫做原型模式(prototype pattern)。原型模式属于创建设计模式的范畴,与它相对的单例模式(Singleton Pattern)相对应,这两个设计模式都很简单,也很常用。 使用场景: 1. 当有许多子类,并且仅仅是对象的类型不同而已。 2. 引用程序中,需要创建大量的类实例且这些实例的状态等差异很小。 3. 动态的绑定原创 2013-05-08 23:01:31 · 1543 阅读 · 0 评论 -
单例模式(singleton pattern)
单例模式就是一个类或者值能够被应用程序全局访问,并且始终是初始化创建的那个实例。单例模式是属于创建模式的范畴,它比较简单,但是,需要注意几个细节。 class DreamFactory{ //lazy instantiation private static DreamFactory dream = null; protected static D原创 2013-05-08 14:20:16 · 1339 阅读 · 0 评论 -
中介者模式(Mediator Pattern)
在多个对象或者类之间,中介者模式用来减少交流的复杂性。这个模式提供了一个中介者类,这个类正常地处理不同类之间的交流。通过松耦合性,它使得代码维护性更容易。中介者模式归属于行为型模式的范畴。 为了更好的阐述这个观念,我用一个实例来表达这个思想。 我创建了一个聊天室类ChartRoom,一个用户类User。用户发信息到ChatRoom中,而ChatRoom负责发送信息给所有的对象。原创 2014-02-15 23:50:59 · 1136 阅读 · 0 评论 -
命令模式(Command Pattern)
命令模式是一个数据驱动设计模式,它归属于行为型模式的范畴。一个请求作为命令的形式被封装成一个对象,并且传递给调用对象。调用对象查找能够处理这个命令的恰当对象,传递命令给相应的对象,那个对象就执行这个命令。 在这个实例中,我们创建了一个充当一个命令的接口Order,创建一个股票类Stock充当一个请求。具体的命令类BuyStock和SellStock实现Order接口,它们将做实际上的命令原创 2014-02-15 23:17:30 · 1357 阅读 · 0 评论 -
工厂设计模式(Factory Pattern)
提供了比工厂模式更高一级的接口级,用于返回若个工厂之一。这个模式是属于创建模式之一。有几点值得注意: 对象的创建充分重用重要的代码。 对象的创建需要访问某个信息或者资源时,这对象不应该包含在组合类中。 一般对象生命周期管理必须集中化,确保应用程序中行为的一致性。 分析一个例子,如下: 定义一个枚举类型的CarType类,列出车的类型。public en原创 2013-05-13 11:30:08 · 1380 阅读 · 0 评论 -
责任链模式(Chain of Responsibility Pattern)
在彼此不了解的情况下,让多于一个对象处理请求,传递请求给责任链直到它被最终被处理完成,称这种模式为责任链模式。责任链模式是属于行为设计模式的类别之一,经典的UML类图如下所示: 使用场景和优势: 一个请求需要被不少于一个对象处理。 不清楚到底哪个对象会处理请求,可能有多于一个对象制动化地处理它。减少耦合度。 弹性地操作请求。 Java Servlet原创 2013-05-22 23:14:54 · 1241 阅读 · 0 评论 -
装饰模式(Decorator Pattern)
动态或者静态地为一个对象附加一个职责或者功能,称为装饰模式。它是属于结构设计模式之一,比较常用。 使用场合和优势: 为子类提供了一个可选项。 在不影响其它对象的前提下,给一个对象添加一个新方法。 很容易动态地添加和删除某个职责。 比静态继承更具有灵活性。 对于对象来说是透明的。 下列UML类图展示了装饰模式的经典实现模型。 我们将原创 2013-05-15 16:49:47 · 1261 阅读 · 0 评论 -
抽象工厂模式(Abstract Factory Pattern)
顾名思义,他是属于创建设计模式之一,作为工厂模式上的抽象层。抽象设计模式是比工厂模式更抽象一级的模式。 在工厂模式的例子基础之上,添加地域功能,以实现全球范围的汽车类型. UML 类图如下: 完整代码如下: public enum Location { DEFAULT, USA, ASIA} publi原创 2013-05-13 14:41:04 · 1427 阅读 · 0 评论 -
适配器模式(Adapter Pattern)
转换一个存在的接口到一个新的接口,以完成不相关的类的兼容性和重用性,这种模式叫做适配器模式。这个模式也被称为封装(wrapper)模式,适配器模式是属于结构设计模式之一。 适用场合和优势: 尝试去匹配一个接口(WindowAdapter等) 使不相关的类工作在一起 多兼容性融合 提高类的透明性 制作课插入的套件(pluggable kit) 委托对象 更高级类的重用原创 2013-05-15 10:55:17 · 1533 阅读 · 0 评论 -
构造模式(Builder Pattern)
从简单的对象一步一步构造一个复杂的对象,这就叫做构建模式。它是属于创建设计模式之一,也挺常用的。 适用场合和好处: 仅仅通过指定它的类型和内容来生成一个复杂的对象,而这个构造的对象隐藏在它的构建细节。 想分离构建一个复杂对象的过程。 为析构和呈现而隔离代码 给予你更好的控制析构(construction)过程。 对于组合(Composite), 它经常用原创 2013-05-13 23:45:28 · 2319 阅读 · 0 评论 -
代理模式(Proxy Pattern)
使用简单的对象来代替一个复杂的对象或者为另一个对象提供一个占位符来控制对它的访问。经典UML类如下: 使用场合和优势: 实时或是在内存中创建一个对象代价太高的情况下。 延迟创建直到你需要实际的对象。 加载大的图像。 在网络的高峰时间段加载远程对象。 对于一个复杂的系统,必须使用访问权限时,需要使用代理模式。 从JDK 1.3 开始,java 就对实现代理设原创 2013-05-16 09:42:25 · 1565 阅读 · 0 评论 -
桥接模式(Bridge Pattern)
从类的实现中分离出抽象或者接口类,以便于这两个类能够互不相干,这种模式称作桥接模式。这种类型模式属于结构设计模式之一, 它通过提供了一个桥结构来分离具体的实现类和抽象类。 适用场合和优势: 想永久地分离抽象和实现类。 在多个对象中分享一个具体的实现类。 想去提高可扩展性。 从客户端哪里隐藏具体的实现。 具体分析一个简单的实例,看看它是如何实现桥接模式。原创 2013-05-15 13:06:55 · 1472 阅读 · 0 评论 -
享元模式(Flyweight Pattern)
高效飞快地生成类的实例以提高性能称为享元模式。它是结构设计模式之一,常常被使用在独特的字符或是屏幕上的图标等。 使用场合和优势: 需要实例化大量小型且可以很好颗粒化的类。 需要图标来展示对象。 一个对象外部的状态能够通过类来共享。 享元模式减少了对象的创建,降低了内存的花费和提升了性能。 相关的模式: 组合模式支持迭代的结构而一个享元仅仅被应用到一个对原创 2013-05-15 23:37:09 · 1576 阅读 · 1 评论 -
外观模式(Facade Pattern)
外观模式:在子系统中对一个集合的接口提供同统计的接口,门面定义了能够使子系统更好用更高一级的接口。像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度。看一个简单的例子,UML类图如下所示:ShapeMaker使用了一个具体的类,这个类能够帮助用户调用到所有类的操作。FacadeePattern作原创 2014-02-11 22:42:56 · 1537 阅读 · 0 评论 -
23种设计模式用英语如何表达?
本人最近收集了一下23钟设计模式的英文解释,分享如下。--- Abstract Factory Provides one level of interface higher than the factory pattern. It is used to return one of several factories.--- Builder Construct a comple原创 2014-10-28 22:19:12 · 4745 阅读 · 0 评论