Epsilon

Stay hungry. Stay foolish.

解释器模式(Interpreter)

一、模式动机 如果在系统中某一特定类型的问题发生的频率很高,此时可以考虑将这些问题的实例表述为一个语言中的句子,因此可以构建一个解释器,该解释器通过解释这些句子来解决这些问题。 解释器模式描述了如何构成一个简单的语言解释器,主要应用在使用面向对象语言开发的编译器中。 二、模式定义 ...

2016-06-26 19:00:33

阅读数:1677

评论数:0

备忘录模式(Memento)

一、模式动机 在应用软件的开发过程中,有时我们有必要记录一个对象的内部状态。为了允许用户取消不确定的操作或从错误中恢复过来,需要实现备份点和撤销机制,而要实现这些机制,我们必须事先将状态信息保存在某处,这样状态才能将对象恢复到它们原先的状态。 但是对象通常封装了其部分或所有的状态信息...

2016-06-26 15:54:08

阅读数:313

评论数:0

命令模式(Command)

一、模式动机 在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计,使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活。 二、模式定义 ...

2016-06-26 15:27:03

阅读数:400

评论数:0

访问者模式(Visitor)

一、模式动机 对于系统中的某些对象,它们存储在同一个集合中,且具有不同的类型,而且对于该集合中的对象,可以接受一类称为访问者的对象来访问,而且不同的访问者其访问方式有所不同,访问者模式为解决这类问题而诞生。 在实际使用时,对同一集合对象的操作并不是唯一的,对相同的元素对象可能存在多种...

2016-06-26 14:38:54

阅读数:271

评论数:0

模板方法模式(Template Method)

一、模式动机 准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模版方法模式的用意。 模版方法模式需要开发抽象类和具体子类的设计师之间的协作。一...

2016-06-26 12:53:56

阅读数:342

评论数:0

迭代器模式(Iterator)

一、模式动机 一个聚合对象,如一个列表(List)或者一个集合(Set),应该提供一种方法来让别人可以访问它的元素,而又不需要暴露它的内部结构。 针对不同的需要,可能还要以不同的方式遍历整个聚合对象,但是我们并不希望在聚合对象的抽象层接口中充斥着各种不同遍历的操作。 在迭代...

2016-06-26 11:53:48

阅读数:334

评论数:0

策略模式(Strategy)

一、模式动机 完成一项任务,往往可以有多种不同的方式,每一种方式称为一个策略,我们可以根据环境或者条件的不同选择不同的策略来完成该项任务。 在软件开发中也常常遇到类似的情况,实现某一个功能有多个途径,此时可以使用一种设计模式来使得系统可以灵活地选择解决途径,也能够方便地增加新的解决途...

2016-06-26 10:37:47

阅读数:410

评论数:0

职责链模式(Chain of Responsibility)

一、模式动机 职责链可以是一条直线、一个环或者一个树形结构,最常见的职责链是直线型,即沿着一条单向的链来传递请求。 链上的每一个对象都是请求处理者,职责链模式可以将请求的处理者组织成一条链,并使请求沿着链传递,由链上的处理者对请求进行相应的处理。 客户端无须关心请求的处理细节以及请...

2016-06-26 10:02:47

阅读数:301

评论数:0

中介者模式(Mediator)

一、模式动机 在面向对象的软件设计与开发过程中,根据“单一职责原则”,我们应该尽量将对象细化,使其只负责或呈现单一的职责。 对于一个模块,可能由很多对象构成,而且这些对象之间可能存在相互的引用,为了减少对象两两之间复杂的引用关系,使之成为一个松耦合的系统,我们需要使用中介者模式,这就...

2016-06-25 22:22:46

阅读数:284

评论数:0

观察者模式(Observer)

一、模式动机 建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应做出反应。在此,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展,这就是观察...

2016-06-25 21:31:43

阅读数:390

评论数:0

状态模式(State)

一、模式动机 在很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的(stateful)对象。这样的对象状态是从事先定义好的一系列值中取出的。当一个这样的对象与外部事件产生互动时,其内部状态就会改变,从而使得系统的行为也随之发生变化。 ...

2016-06-25 19:23:27

阅读数:321

评论数:0

代理模式(Proxy)

一、模式动机 一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用,去掉客户不能看到的内容和服务或者增添客户需要的额外服务。如在网页上查看一张图片,由于网速等原因图片不能立即显示,我们可以在图片传输过程中先把一些简单的用于描述图片的文字传输到客户端,此时这...

2016-06-25 18:50:02

阅读数:316

评论数:0

外观模式(Facade)

一、模式动机 将一个系统划分为若干个子系统有利于降低系统的复杂性,一个常见的设计目标是使子系统间的通信和相互依赖关系达到最小,而达到该目标的途径之一就是引入一个外观对象,它为子系统中较一般的设置提供了一个单一而简单的界面。 外观模式要求一个子系统的外部与其内部的通信必须通过一个统一的...

2016-06-25 17:05:57

阅读数:323

评论数:0

享元模式(Flyweight)

一、模式动机 享元模式对那些通常因为数量太大而难以用对象来表示的概念或实体进行建模。 二、模式定义 享元模式(Flyweight):运用共享技术有效地支持大量细粒度的对象。 系统只使用少量的对象,而这些对象都很近,状态变化很小,对象使用次数增多。享元模式是一种对象结构型模式。 三、模式结构...

2016-06-25 16:47:09

阅读数:314

评论数:0

组合模式 (Composite Pattern)

一、模式动机 对于树形结构,当容器对象(如文件夹)的某一个方法被调用时,将遍历整个树形结构,寻找也包含这个方法的成员对象(可以是容器对象,也可以是叶子对象,如子文件夹和文件)并调用执行。(递归调用) 由于容器对象和叶子对象在功能上的区别,在使用这些对象的客户端代码中必须有区别地对待容...

2016-06-25 15:53:53

阅读数:285

评论数:0

装饰模式(Decorator Pattern)

一、模式动机 有时我们希望给某个对象而不是整个类添加一些功能。例如:一个图形用户界面工具箱允许我们对任意一个用户界面组件添加一些新的特性,如增加一个边框;或者增加一些行为,如窗口的滚动 一种较为灵活的方式是将组件嵌入另一个对象中,由这个对象来添加边框。我们称这个嵌入的对象为装饰器(D...

2016-06-24 22:23:39

阅读数:280

评论数:0

桥接模式(Bridge)

一、模式动机 桥接模式的用意是“将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化” 二、模式定义 桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Han...

2016-06-24 21:48:06

阅读数:407

评论数:0

适配器模式(Adapter)

一、模式动机 通常,客户类(client of class)通过类的接口访问它提供的服务。有时现有的类(existing class )可以提供客户类的功能需要,但是它所提供的接口不一定是客户类所期望的。这是由于现有的接口名称与客户类所查找的不同等诸多不同原因导致的。 在这种情况下, ...

2016-06-24 20:58:01

阅读数:246

评论数:0

抽象工厂模式(Abstract Factory)

一、模式动机 在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法也具有唯一性,一般情况下,一个具体工厂中只有一个工厂方法或者一组重载的工厂方法。但是有时候我们需要一个工厂可以提供多个产品对象,而不是单一的产品对象。 二、模式定义 抽象工厂模式(Abstra...

2016-06-24 19:34:29

阅读数:267

评论数:0

建造者模式(Builder Pattern)

一、模式动机 在某些情况下,一个对象会有一些重要的属性,在它们没有恰当的值之前,对象不能作为一个完整的产品使用。比如,一个电子邮件有发件人地址、收件人地址、主题、内容、附录等部分,而在最起码的收件人地址未被赋值之前,这个电子邮件不能发出。 二、模式定义 将一个复杂对象的构建与它的表示分离...

2016-06-24 19:06:36

阅读数:229

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭