设计模式
文章平均质量分 74
xuelu1987
这个作者很懒,什么都没留下…
展开
-
COMMAND(命令) ---- 对象行为型模式
[size=large]1、意图 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录日志,以及支持可撤销的操作。2、别名 动作(Action),事务(Transaction)3.动机 有时必须向某对象提交请求,但并不知道关于被请求的操作或请求的接受者的任何信息。例如,用户界面工具箱包括按钮和菜单这样的对象,它们执行请求响应用户的...原创 2013-03-06 11:20:50 · 129 阅读 · 0 评论 -
MEDIATOR(中介者)——对象行为型模式
[size=large]1、意图 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。2.动机 面向对象设计鼓励将行为分布到各个对象中。这种分布可能会导致对象间有许多连接。在最坏的情况下,每一个对象都知道其他所有对象。 虽然将一个系统分割成许多对象通常可以增加复用性,但是对象间相互连接的激增...原创 2013-06-09 16:17:49 · 184 阅读 · 0 评论 -
OBSERVER(观察者)——对象行为型模式
[size=large]1、意图 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。2、别名 依赖(Dependents),发布—订阅(Publish-Subscribe)3、动机 将一个系统分割成一系列相互协作的类有一个常见的副作用:需要维护相互对象间的一致性。我们不希望为了维护一致性而使各类紧密耦合,因为...原创 2013-06-13 15:36:01 · 173 阅读 · 0 评论 -
从MVC理解设计模式
[size=x-large] 本文将透过MVC来帮助我们理解“模式”这一术语的含义。 MVC包含三类对象。模型Model是应用对象,视图View是它在屏幕上的标示,控制器Controller定义用户界面对用户输入的相应方式。不使用MVC,用户界面设计往往将这些对象混在一起,而MVC则将它们分离以提高灵活性和复用性。 MVC通过创建一个“订购/通知”协议来分离视图和模型。视图必须...原创 2013-02-19 14:40:35 · 109 阅读 · 0 评论 -
23个设计模式的名字和意图
[size=large]1、Abstract Factory:提供一个创建一系列或者相互依赖对象的接口,而无需指定它们具体的类。2、Adapter:将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。3、Bridge:将抽象部分与它的实现部分分离,使它们都可以独立地变化。4、Builder:将一个复杂对象的创建与它的表示...原创 2013-02-19 15:41:33 · 306 阅读 · 0 评论 -
Facade模式 --- 对象结构型模式
[size=large]1、意图 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。2、动机 将一个系统划分为若干子系统有利于降低系统的复杂度。一个常见的设计目标是使子系统间的通信和相互依赖达到最小。达到该目标的途径之一就是引进一个外观(facade)对象,它为子系统中较为一般的设施提供了一个单一而简单的界面。...原创 2013-02-19 17:03:46 · 192 阅读 · 0 评论 -
Flyweight pattern(享元模式)
1. 概述面向对象技术可以很好地解决系统一些灵活性或可扩展性或抽象性的问题,但在很多情况下需要在系统中增加类和对象的个数。当对象数量太多时,将导致运行代价过高,带来性能下降等问题。比如:例子1:图形应用中的图元等对象、字处理应用中的字符对象等。[img]http://dl.iteye.com/upload/attachment/0080/6386/dd3fa320-3437-3...原创 2013-02-20 14:45:08 · 64 阅读 · 0 评论 -
ABSTRACT FACTORY(抽象工厂)------ 对象创建型模式
[size=large]1、意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。2、别名 Kit3、动机 考虑一个支持多种视感(look-and-feel)标准的用户界面工具包,例如Motif和Presentation Manager。不同的视感风格为诸如滚动条、窗口和按钮等用户界面“窗口组件”定义不同的外观和行为。为保证视感风格标准间的可移植...原创 2013-02-22 11:21:25 · 78 阅读 · 0 评论 -
Builder(生成器)---- 对象创建型模式
1、意图 将一个复杂对象的创建和它的表示分离,使得同样的创建过程可以创建不同的表示2、实用性 1)当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 2)当构造过程必须允许被构造的对象有不同的表示时。3、结构[img]http://dl.iteye.com/upload/attachment/0080/8164/4b18f463-afeb-...原创 2013-02-25 15:54:31 · 124 阅读 · 0 评论 -
STRATEGY(策略)——对象行为型模式
[size=large]1、意图 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。2、别名 政策(Policy)3、动机 有许多算法可对一个正文流进行分析。将这些算法硬编码进使用它们的类中是不可取的,其原因如下: 需要换行功能的客户端程序如果直接包含换行算法代码的话将会变得复杂,这使得客户程序庞...原创 2013-06-17 16:19:39 · 169 阅读 · 0 评论 -
STATE(状态)—— 对象行为型模式
[size=large]1、意图 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。2、别名 状态对象(Objects for States)3、动机 考虑一个表示网络连接的类TCPConnection。一个TCPConnection对象的状态处于若干不同状态之一:连接已建立(Established)、正在监听(Listening)、连接...原创 2013-06-14 16:49:04 · 223 阅读 · 0 评论 -
CHAIN OF RESPONSIBILITY(职责链) —— 对象行为型模式
[size=large]1、意图 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之前的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,知道有一个对象处理它为止。2、动机 考虑一个图形用户界面中的上下文有关的帮助机制。用户在界面的任一部分上点击就可以得到帮助信息,所提供的帮助依赖于点击的是界面的哪一部分以及其上下文。例如,对话框中的按钮的帮助信息就可能和主窗...原创 2013-06-06 16:32:25 · 117 阅读 · 0 评论 -
BRIGE(桥接) ------ 对象结构型模式
[size=large]1、意图 将抽象部分与它的实现部分分离,使它们都可以独立地变化,通常被认为是双重抽象。2、别名 Handle/Body3、动机 当一个抽象类可能有多个实现时,通常用继承来协调它们。抽象类定义对该抽象的接口,而具体的子类则用不同方式加以实现。但是此方法有时不够灵活。继承机制将抽象部分与它的实现部分固定在一起,使得难以对抽象部分和实现部分进...原创 2013-03-27 11:20:48 · 143 阅读 · 0 评论 -
ADAPTER(适配器) --- 类对象结构型模式
[size=large]1、意图 将一个类的接口转化成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。2、别名 包装类 Wrapper3、动机 有时,为复用而设计的工具类不能被复用的原因仅仅是因为它的接口与专业应用领域所需要的接口不匹配。4、适用性 以下情况使用Adapter模式 你想使用...原创 2013-03-28 11:33:17 · 171 阅读 · 0 评论 -
TEMPLATE METHOD(模板方法)----- 类行为型模式
[size=large]1、意图 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。2、动机 考虑一个提供Application和Document类的应用框架。Application类负责打开一个已有的已外部形式存储的文档,如一个文件。一旦一个文档中的信息从该文件中读出后,它就由...原创 2013-04-07 11:27:40 · 101 阅读 · 0 评论 -
设计模式的三大分类解析
[size=large] 设计模式在功能上分为三大类:创建型模式,结构型模式和功能性模式。下面根据这三大类模式来展开设计模式的实现目的和实现方式。1、创建型模式 创建型模式抽象了实例化过程。它们帮助一个系统如何创建、组合和表示它的那些对象。一个类创建型模式使用继承改变被实例化的类,而一个对象创建模式将实例化委托给另一个对象。 随着系统演化得越来越依赖于对象复合而不是类...原创 2013-05-24 14:48:31 · 212 阅读 · 0 评论 -
FACTORY METHOD(工厂方法) ---- 对象创建型模式
[size=large]1、意图 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到子类。2、别名 虚拟构造(Virtual Constructor)3、动机 框架使用抽象类定义和维护对象之间的关系。这些对象的创建通常也由框架负责。 考虑这样一个框架,它可以向用户展示多个文档。在这个框架中,两个主...原创 2013-05-28 11:43:13 · 125 阅读 · 0 评论 -
COMPOSITE(组合) ---- 对象结构型模式
[size=large]1、意图 将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。2、动机 在绘图编辑器和图形捕捉系统这样的图形应用系统中,用户可以使用简单的组件创建复杂的图标。用户可以组合多个简单组件以形成一些较大的组件,这些组件又可以组合成更大的组件。一个简单的实现方法是为Text和Line这样的图元定...原创 2013-05-31 15:12:29 · 166 阅读 · 0 评论 -
DECORATOR(装饰) -—— 对象机构型模式
[size=large]1、意图 动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更加灵活。2、别名 包装器Wrapper3、动机 有时我们希望给某个对象而不是整个类添加一些功能。例如,一个图形用户界面工具箱允许你对任意一个用户界面组件添加一些特性,例如边框,或是一些行为,例如窗口滚动。 使用继承机制是添加功能的...原创 2013-06-03 11:43:56 · 89 阅读 · 0 评论 -
PROXY(代理) —— 对象结构型模式
[size=large]1、意图 为其他对象提供一种代理以控制对这个对象的访问。2、别名 Surrogate3、动机 对一个对象进行访问控制的一个原因是为了只有在我们确实需要这个对象时才对它进行创建和初始化。我们考虑一个可以在文档中嵌入图形对象的文档编辑器。有些图形对象(如大型光栅图形)的创建开销很大。但是打开文档必须很迅速,因此我们在打开文档时应避免一次性创...原创 2013-06-05 11:24:19 · 143 阅读 · 0 评论 -
VISITOR(访问者) ---- 对象行为型模式
1、意图 表示一个作用于某对象结构中的各元素的操作。将对象结构中的算法从对象结构中分离出来,它使得你可以再不改变各元素的类的前提下定义作用于这些元素的新操作。2、动机 考虑一个编译器,它将源程序表示为一个抽象语法树。该编译器需在抽象语法树上实施某些操作以进行“静态语义”分析,例如检查是否所有变量都已经被定义了。它也需要生成代码。因此它可能要定义许多操作以...原创 2013-02-26 17:03:18 · 144 阅读 · 0 评论