摘要: 定义:解释器模式(Interpreter Pattern)给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。类型:类行为型模式概述:正如GoF所介绍的,解释器模式的应用场合比较窄。解释器模式在《Head First Design Pagtterns》中也被列为非常用模式。解释器模式虽然说更多应用在某种语言上,但是解释器的原理还是可以应用在其他场合的。解释器模式与组合模式有很大的相似性。正如GoF所言,在最宽泛的概念下,几乎每个使用复合模式的系统也都使用了解释器模式。解释器模式与组合模式的不同主要体现在,解释器模式中的几个解释器类都有相同的接口,而组 阅读全文
posted @ 2014-02-19 21:47 飞鹤0755 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 定义:命令模式(Command Pattern),将一个请求封闭成一个对象,从而使你可用不同的请求对客户进行参数化;对请求排除或记录请求日志,以及支持可撤销的操作。类型:行为型模式。概述: 命令模式,被《HeadFirst设计模式》列为常见的设计模式之一,而且光看类图,感觉很简单。可是真正要去运用的时候,往往会发现无从下手。因为你不知道什么时候该使用命令模式。任何关联的两个类,你发现居然都可以使用命令模式。但是使用了之后,发现代码理解起来似乎变得更复杂了。本来比较简单,并且耦合并不严重的两个类,再加进来一个命令类,反倒更复杂了。如果严格依照迪米特法则,差不多任何两个有关联的类都似乎需要一个中介 阅读全文
posted @ 2014-02-15 16:27 飞鹤0755 阅读(668) 评论(3) 推荐(1) 编辑
摘要: 定义:职责链模式(Chain OfResponsibility Pattern),使从个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理安为止。类型:行为型模式。概述:职责链模式,行为型模式,说明其主要是通过行为来表现的。这里的行为,也可以理解为方法(Method)。职责链模式,将一堆处理事件的行为对象抽象为一个个的类。有些类似链表结构,每个类中都有一个指针,指向它的下一个类。这样,当一个类处理完它要处理的事情之后,就将工作将给下一个类来处理。如果下一个类发现它暂时无事可做,它依然将职责转到下一个类去处理。职责链模 阅读全文
posted @ 2014-01-22 11:22 飞鹤0755 阅读(687) 评论(0) 推荐(0) 编辑
摘要: 定义:代理模式(ProxyPattern),为其他对象提供一种代理以控制对这个对象的访问。类型:结构型模式分类:远程代理,为一个对象在不同的地址空间提供局部代表。虚代理,根据需要创建开销很大的对象。保护代理,控制对原始对象的访问。智能指引,取代简单指针,在访问时执行一些附加操作。概述:远程代理,如代理商,什么区域代、省代之类的都算是远程代理。代理商在某一局部代表厂商。虚代理,主要是为了解决一次开销过大的情况,例如打开大的文件之类的。保护代理,律师就是代理委托人行使其保护其权利,正好是保护代理。智能指针,智能指针,画图双缓存等都算是智能指引了,主要是复用对象的某些特性自动完成某些工作,如构造函数 阅读全文
posted @ 2014-01-21 01:25 飞鹤0755 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 定义:享元模式(Flyweight Pattern),运用共享技术有效地支持大量细粒度的对象。类型:结构型模式。适用情况:一个应用程序有大量的对象。对象的大多数状态都是外部的。如果删除对象的外部状态,可以和相对较少的共享对象取代很多组对象。应用程序不依赖对象的标识,即应用程序依赖于对象的抽象接口。概述: Flyweight,原意为“轻量级选手”的意思。翻译者将它意为享元模式,是意译,力求能够直观地表现出此模式的目的。享,共享之意。元,基本单元的意思。享元,也就是共享基本单元,也即GoF所言的运用共享技术有效地支持大量细粒度的对象。享元模式的重点在于将对象的“内部状态”和“外部状态”抽象出来,内 阅读全文
posted @ 2014-01-20 12:28 飞鹤0755 阅读(503) 评论(0) 推荐(0) 编辑
摘要: 定义:外观模式(Façade Pattern),为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。类型:结构型模式。适用性:当子系统非常复杂时,使得客户调用非常麻烦,不便于使用。这个时候就可以使用外观模式将这些子系统封装起来,提供一个统一而简单接口供客户端使用。当需要构建一个层次结构的子系统时,使用外观模式可以给子系统定义进入口。概述:外观模式主要依赖“迪米特法则”,即尽量减少与其他实体之间的联系。例如,用户和一台电脑。如果用户想开机,他不需要云单独打开电源,再启动CPU,再启动硬盘电源,再连接显示器。用户不需要知道电脑开机完成了 阅读全文
posted @ 2014-01-19 19:06 飞鹤0755 阅读(397) 评论(0) 推荐(0) 编辑
摘要: 定义:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。类型:结构型模式。类图: 参入者:Component,抽象类,只是提供接口。Model,一个具体对象,实现接口完成一些基本的功能。Decorator,有一个指向Component的指针,并且实现了Componet的接口。Hairtician,Costumer,都是具体的装饰者,首先在实现基本的接口下,添加了新的功能。适用性:装饰模式其应用体现在装饰上。那些需要动态添加同类型功能的产品,都可以使用装饰模式。以添加新类的方式来给单个对象添加新装饰。当不能以子类的方式扩展时,可以使用装饰模式来扩展。 阅读全文
posted @ 2014-01-18 19:22 飞鹤0755 阅读(621) 评论(0) 推荐(0) 编辑
摘要: 定义:组合模式(CompositePattern),将对象组合成树形结构以表示“部分—整体”的层次结构。“Composite”使得用户对单个对象和对组合对象的使用具有一致性。类型:结构型模式。类图:参与者:Computer,客户端,选择是否添加USB设备。USBDevice,所有USB设备的抽象类,提供USB设备的基本通信接口。USBMouse,单个对象,没有子部件。USBHub,也即Composite组合对象,可能存在多个子部件。适用性:无论是单个对象还是组合对象,用户都希望使用统一接口来控制,这种情况下适合组合模式。概述:组合模式给人的感觉很像树干树枝的结构,再一想,其实和USB拓扑结构图 阅读全文
posted @ 2014-01-14 19:07 飞鹤0755 阅读(566) 评论(0) 推荐(0) 编辑
摘要: 定义:桥接模式(BridgePattern),将抽象部分与它的实现部分分离,使它们都可以独立地变化。类型:结构型模式。类图:参与角色:Clinet,客户指定组装电脑,指定了最初的接口。Computer,电脑抽象类,指定了具体安装CPU的接口。DesktopComputer,具体的台式机电脑,根据主板型号具体实现如何安装CPU。CPU,抽象类,指定连接CPU针脚的接口。Pentium,Core,具体的CPU,具体实现如何连续CPU的针脚。概述: CPU每年都在更新,尤其是像Pentium和Core这样两代产品架构的更新,直接导致整个电脑产业链的更新。例如,Pentium和Core架构下的CPU针 阅读全文
posted @ 2014-01-13 00:56 飞鹤0755 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 定义:适配器模式(Adapter),将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。类型:结构型模式。适用性:你想使用一个已经存在的类,而它的接口不符合要求。你想创建一个可以复用的类,该类可以与其他接口不兼容的类协同工作。你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。可以使用对象适配器来适配它的父类接口。类图:参与角色:Client,与Target对象类同工作的客户端.Target,提供满足Client要求的接口.Adapter,Target的派生类,通过调用Adpatee提供的接口来实现目标接口。A 阅读全文
posted @ 2014-01-12 02:39 飞鹤0755 阅读(465) 评论(0) 推荐(0) 编辑