设计模式精解
文章平均质量分 62
温故而知新。好文章是需要反复阅读品味的。本专栏介绍各设计模式,用于对各设计模式的了解和巩固。
方寸之间
这个作者很懒,什么都没留下…
展开
-
重学设计模式 - Chain of Responsibility(责任链)模式 - 行为型
1、意图使多个对象都有机会处理请求,从而避免请求的发送者和接收者间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。2、动机给多个对象“处理一个请求”的机会,从而解耦发送者和接收者。该请求沿对象链传递,直啊到有一个对象处理它。从第一个对象开始,链中收到请求的对象要么亲自处理它,要么转发给下一个候选者。请求发送者并不明确地知道哪一个对象将会处理它原创 2012-07-08 16:19:45 · 1531 阅读 · 1 评论 -
重学设计模式 - Proxy(代理)模式 - 结构型
1、意图为其他对象提供一种代理以控制对这个对象的访问2、动机为了只有在确实需要这个对象时才对它进行创建和初始化。提高程序响应速度。3、适用性远程代理(Remote Proxy) 为一个对象在不同的地址空间提供局部代表。虚代理(Virtual Proxy)为开销很大的对象创建代理,使之可以按需创建。保护代理(Protection Proxy) 控制对原始对象的原创 2012-07-07 07:15:27 · 1578 阅读 · 0 评论 -
重学设计模式 - Flyweight(享元)模式 - 结构型
1、意图运用共享技术有效地支持大量细粒度的对象2、动机Flyweight模式描述了如何共享对象,使得可以细粒度地使用它们而无需高昂的代价。3、适用性Flyweight模式的有效性很大程度上取决于如何使用它以及在何处使用它。一个应用程序使用了大量的对象;完全由于使用了大量的对象,造成很大的存储开销;对象的大多数状态都可变为外部状原创 2012-06-30 16:11:20 · 1515 阅读 · 0 评论 -
重学设计模式 - Composite(组合)模式 - 结构型
1、意图将对象组合成树形结构以表示“部分 - 整体”的层次结构,Composite使得用户对单个对象和组合对象的使用具有一致性。2、动机在图形应用程序中,用户可以使用简单的图元组件组合成较大的组件,这些组件又可以组合成更加复杂的组件。Composite描述了如何使用递归组合,使得用户不必对这些类进行区别。它的关键是一个抽象类,既可以代表简单的图元,又可以代表图元的组合。原创 2012-06-25 16:02:59 · 1197 阅读 · 0 评论 -
重学设计模式 - Prototype模式
1、意图用原型实例指定创建对象的种类,并且通过“拷贝这些原型”创建新的对象。2、问题当一个系统应该独立于它的产品创建、构成和表示时;当要实例化的类是在运行时指定时(如动态装载);为了避免创建一个与产品类层次平行的工厂类层次时;当一个类的实例只能有几个不同状态组合中的一种时。3、解决方案创建产品时,根据原型参数,克隆一个新产品。4、通用结构5、参与原创 2012-05-23 14:45:05 · 2040 阅读 · 0 评论 -
重学设计模式 - Builder模式
1、意图将一个复杂对象的构建与它的表示分离开,使得同样的构建过程可以创建不同的表示。2、问题创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式。构造过程必须允许被构造的对象有不同的表示。3、解决方案将复杂对象的构造方法独立出来。4、通用结构5、参与者builder:为创建一个Product的各个部件指定抽象接口。Con原创 2012-05-22 11:39:21 · 1248 阅读 · 0 评论 -
重学设计模式 - Factory Method模式
1、意图定义一个创建对象的接口,让子类决定实例化哪一个类。Factory Method模式使一个类的实例化延迟到子类。2、问题一个类需要实例化另一个类的派生类。但不知道是哪一个。Factory Method允许派生类进行决策。3、解决方案派生类对实例化哪个类和如何实例化做出决策。4、通用结构 5、参与者Product:定义将被原创 2012-05-21 15:54:28 · 1353 阅读 · 0 评论 -
重学设计模式 - Object Pool模式
1、意图在创建对象比较昂贵,或者对于特定类型能够创建的对象数目有限制时,管理对象的重用。2、问题对象的创建和/或管理必须遵循一组定义明确的规则集。通常这些规则都与如何创建对象、能够创建多少个对象和在已有对象完成当前任务时如何重用它们等等相关。3、通用结构4、解决方案在需要一个Reusable对象时,Client调用ReusablePool的A原创 2012-05-20 14:52:27 · 4463 阅读 · 1 评论 -
重学设计模式 - Double-Checked Locking模式
1、 意图多线程中,创建线程安全的单件模式。2、 问题多线程中,Singleton模式并不总是正常工作的。3、 解决方案在检查到null或实例未创建之后进行“同步”,然后再检查一次,确保实例尚未创建4、 效果Singleton模式的变体,优化掉不必要的锁定,这种同步检查最多进行一次,因此不会成为瓶颈。5、原创 2012-05-20 11:48:27 · 2726 阅读 · 0 评论 -
重新设计模式 - Singleton模式
1、意图保证一个类仅有一个实例,并提供一个访问它的全局访问点。2、工作原理用一个特殊方法来实例化所需的对象。其中最关键的就是这个方法:调用这个方法时,检查对象是否已经实例化。如果已经实例化,该方法仅返回对该对象的一个引用。如果尚未实例化,该方法实例化该对象并返回对此新实例的一个引用。为了确保这是实例化此类型对象的唯一方法,将这个这个类的构造函数定义为保护或者私有的。原创 2012-05-20 10:19:15 · 1382 阅读 · 0 评论 -
重学设计模式 - Abstract Factory模式
1、意图提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。2、适用性以下情况可用Abstract Factory 模式:一个系统要独立于它的产品的创建、组合和表示时。一个系统要有多个产品系列中的一个来配置时。当你要强调一系列相关产品对象的设计以便进行联合使用时。当你提供一个产品类库,而只想显示它们的接口而不是实现时。原创 2012-05-18 18:02:28 · 1355 阅读 · 0 评论 -
重学设计模式 - Template Method模式
1、TemplateMethod模式简介Template Method是一个旨在帮助我们在抽象层次从一组不同的步骤中概括出一个通用过程的模式。《设计模式》一书中对Template Method模式的意图数这样的:定义一个操作中算法的骨架,而将一些步骤延迟到子类中。不改变算法的结构而重定义它的步骤。Template Method模式适用于存在几个互不相同但概念上相似的过程。每个过程的变化是互原创 2012-05-13 17:47:03 · 1416 阅读 · 0 评论 -
重学设计模式 - Observer模式
1、Observer模式 《设计模式》一书中对Observer模式的意图是这样叙述的:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知并自动更新。 Observer模式并不是只要在对象间存在依赖关系时就要使用。例如,假设在一个票据处理系统中,有一个Tax对象处理缴税问题,显然当票据的项目增加时,Tax对象必须得到通知以便重新计算税额。但这并不原创 2012-05-13 16:51:37 · 1246 阅读 · 0 评论 -
重学设计模式 - Decorator模式
1、 Decorator模式简介 《设计模式》一书中对Decorator模式的意图是这样叙述的:动态的给一个对象添加一些额外的职责。就增加功能来说,Decorator模式比生成子类更为灵活。 Decorator模式的工作原理是:可以创建始于Decorator对象(负责新功能的对象)终于原对象的一个对象“链”。实现方法:将原对象作为新对象的成员。 如上图中Dec原创 2012-05-13 10:15:01 · 1935 阅读 · 0 评论 -
重学设计模式 - Bridge模式
1、Bridge模式简介所谓Bridge就是连接两处的通道。《设计模式》一书对Bridge模式的意图是这样叙述的:“将抽象与实现解耦,使它们都可以独立地变化。” 2、Bridge模式关键特征 意图将一组实现与另一组使用它们的对象分离。问题一个抽象类的派生类必须使用多个实现,但不能出现类数量爆炸性增长原创 2012-05-01 08:59:09 · 1220 阅读 · 0 评论 -
重学设计模式 - Strategy模式
1、Strategy模式简介《设计模式》一书中对Stragety模式的意图是这样叙述的:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。Strategy模式使算法可独立于使用它的客户而变化。 Strategy模式以下面几条原则为基础:1) 对象都具有职责;2) 这些职责不同的具体实现是通过多态的使用完成的;3) 概念上相同的算法具有多个不原创 2012-04-29 15:39:54 · 1801 阅读 · 0 评论 -
重学设计模式 - Adapter模式
1、Adapter模式简介Adapter就是一个目标不能直接拿来使用,需要转换。如电源适配器…《设计模式》一书中对Adapter模式的意图是这样叙述的:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使原本由于接口不兼容而不能一起工作的类可以一起工作。2、Adapter模式关键特征 意图使控制范围之外的一个原有对象与某个接口原创 2012-04-29 09:16:09 · 1559 阅读 · 0 评论 -
重学设计模式 - Facade模式
1、 Facade模式简介Façade在建筑领域的意思是:(掩饰真相的)门面,也就意味着,如果你想探究更细节的真相就需要经过Façade。《设计模式》一书中对Façade模式的意图是这样叙述的:为子系统中的一组接口提供一个统一接口。(提供一个门面,掩饰真相。)Façade模式定义了一个更高层次的接口,使子系统更加容易使用。2、 Facade模式关键特征原创 2012-04-29 08:39:32 · 2730 阅读 · 0 评论