设计模式学习笔记

创建类模式:
Abstract Factory:
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
Factory Method:
定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method模式使一个类的实例化延迟到其子类。

将实例的创建策略独立出来 

Builder:
抽象对象生成过程并将其参数化。

将实例的创建逻辑独立出来 

Singleton:
定义全局唯一对象(需要注意线程安全)。

Prototype:
通过克隆对象实例创建新对象(注意深/浅拷贝之分)。

 

结构类模式:

Facade:

为了子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
Adapter:
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作。主要注意在不同类型的继承层次中引入一个共用的适配器接口并实现相应的子类。这样对于使用者来说就只需要关心这个适配器接口类型。这个模式中会主要用到多继承的概念,属于概念的聚合。
Bridge:
将抽象部分与它的实现部分分离,使它们都可以独立地变化。
我的理解:当概念抽象并不能简单地由继承树进行表示,各个抽象部分需要多个副本进行排列组合形成具有并不期望的复杂度的继承树来完成设计时,应使用Bridge模式将各组概念进行分离,独立变化,但同时在概念组层面建立依赖关系。通过组合抽像类来实现抽象组合。 

Decoration:

简化对象继承树,将概念扩展交由第三方对象处理。经典应用案例->DHTML,换肤控件,Stream。概念的组合会在这个模式中被用到。原则上能组合就尽量不要继承。

Flyweight:
一系列的对象共享数据存储空间以降低单个数据尺寸 

Composite:

提出对象组合概念,特例->对象的递归定义->Tree Node VS Tree Node Collection

Proxy:
将调用者与被调用者之前的平台差异与具体业务逻辑分离。经典应用案例->Web Service, Atlas Ajax Method. 

 

行为类模式: 

Strategy:

定义一系列的算法,把他们一个个封装起来,并且使它们可相互替换。本模式使算法可独立于使用它的客户而变化。

Template :
将逻辑套路与各个具体步骤实现分离。 

Command:
将对象操作(指令)封装成对象以便对操作进行后续维护/护理。

Interpreter:
建立一套指令处理体系,通过对指令的处理实现更灵活的逻辑定制(可以结合Command模式)

Memento:

维护一个指令存储结构(列表),以帮助对象进行状态回滚或前移。经典应用案例: undo / redo.

Status:
当对象的某个状态被改变时,触发一组相应的动作(逻辑)。经典应用案例:.Net中的属性访问设置器(get, set)

Observer:
建立起一套对象通知机制,将通知动作与对象本身进行分离。经典应用案例:事件机制。

Mediator:
当两个对象之间已经存在过多调用依赖时,可创建一个mediator对象用于维护对象间多对多的依赖(逻辑)关系,将多对多简化为一对多。

Iterator:
将对象(集合对象)的内部结构与遍历逻辑进行分离。经典应用案例:.Net中的IEnumerable接口

Chain of Responsibility:

在特定业务逻辑中的一组对象中建离起类似于生产线的依赖调用关系。

Visitor:

根据调用者的类形返回相应数据。 

 

我最喜欢的几个模式:
Observer: 它以对象为单位将业务逻辑中的上下游关系分离,使上游和下游不用关心对方是谁。

Proxy: 它以环境为单位进行了程序集的分离,通过Proxy可以将来自两个不同环境的业务连接起来。

Decoration: 可以在不改变继承树的前提下对业务逻辑进行扩展。

Template: 它以代码块/函数为单位将业务逻辑进行分离,使我们在实现一段逻辑的时候不用关心具体调用的是哪个函数。 

posted on 2010-04-17 16:58  林大虾  阅读(299)  评论(0编辑  收藏  举报

导航