您的位置:首页 > 其它

《Design Pattern》读书笔记

2015-07-06 17:05 176 查看
直接上图



个人理解:

Abstract Factory

比喻 : 产生组装为不同界面风格的产品的各个组件

重点 :

1. 父类为纯虚类

2. 注重水平扩展, 派生出不同风格的组件, 但是不注重添加新功能的组件。

3. 组装产品任务不是Abstract Factory的。 只负责生产组件。

Factory Method

不同的子类产生不同类型的产品

1. Factory 负责产生最终的产品。

2. 除去构造组件组装产品,Factory可以有其他具体逻辑。

3. 父类虚函数往往有默认行为。

4. 注重垂直扩展,产生新特征行功能的组件类组装产品。

Build Method

同样的构造过程可以产生不同的产品, 产品组件之间的差距之大以至于没有相同的继承体系。

1. 组件之间不必须有相同的构造体系。

2. 产品通过builder获取。

3. 可以产生不同的build过程。

PrototypeSingleton ~~

Adaptor

既可以基于组合 , 也可以基于继承。

并不产生新的功能, 只是将不符合当前接口格式但是实现了当前需要功能的接口包装成符合当前接口格式的接口。

Bridge

抽象接口和实现的分离( 基于组合)

假设接口类型m种, 每个接口实现类型 n 种 , 则将继承体系的复杂度由至少 m x n 降低到 m 种接口 + 每个 m x n 种实现,对lib的设计者有效, 这样使用者就不需要关心实现细节 。

Composite

同一继承体系下的对象可以相互包含。

1. 形成树状结构, 支持递归调用

2. 简化客户程序, 不关心具体类型, 遍历执行。

3. 便于添加新类型。

Decorator

同一父类分出两个继承体系, 其中一个体系(修饰物)组合另一个(核心)。

1. 复杂度由 m x n 降为 m +n 。

2. 便于在不修改核心的情况下修改修饰物。

3. 基于同一父类是的修饰物可以方便操作核心。

Factor

Factor 之于 子系统 == shell 之于 内核 + 工具脚本们。

Flyweight

处理大量对象但重复性高的情况 。

Proxy

组合资源消耗型(类似) 的对象, 新的对象仅在必须且可行的时候才使用资源消耗型对象, 其余时候仅仅返回个需假的皮囊。

Chain of responsibility

类似C++ exception的处理方式, 遇到消息, 自己处理,自己不能处理, 就按照预定的规则交给责任链的下一个。

Command

自己不知道如何处理消息, 交给自己组合的处理人员。

Mediator

中控, 小的组件各自独立, 中控负责他们交互时候的逻辑。 解耦组件, 便于重用。

Memetno

按照既定策略记录对于对象的数据, 便于恢复 。

Observe

MVC 典型, 适合一对n的场合 。 改变则通知所有观察者。

Visitor

在类之外为类添加功能的办法 , Visitor 一一访问集合的对象, 进行需要的操作。

Iterator , Template , state ~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: