《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过程。
Prototype 和 Singleton ~~
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 ~~
个人理解:
Abstract Factory
比喻 : 产生组装为不同界面风格的产品的各个组件
重点 :
1. 父类为纯虚类
2. 注重水平扩展, 派生出不同风格的组件, 但是不注重添加新功能的组件。
3. 组装产品任务不是Abstract Factory的。 只负责生产组件。
Factory Method
不同的子类产生不同类型的产品
1. Factory 负责产生最终的产品。
2. 除去构造组件组装产品,Factory可以有其他具体逻辑。
3. 父类虚函数往往有默认行为。
4. 注重垂直扩展,产生新特征行功能的组件类组装产品。
Build Method
同样的构造过程可以产生不同的产品, 产品组件之间的差距之大以至于没有相同的继承体系。
1. 组件之间不必须有相同的构造体系。
2. 产品通过builder获取。
3. 可以产生不同的build过程。
Prototype 和 Singleton ~~
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 ~~
相关文章推荐
- 在VS2013中使用水晶报表
- Linux——基本概念及操作
- iOS学习之iOS沙盒(sandbox)机制和文件操作(一)
- 4412开发板Android系统架构
- oracle 删除掉重复数据只保留一条
- javascript学习笔记
- 关于ArrayList和Vector区别
- crontab 定时调度
- mac平台执行Yii框架的command类
- 在程序中用stmt.executeQuery("select count(1) from tableName")获取到的表的数据量(条数)与实际值不一样(比实际值多几倍)
- 主从延时-探讨与分析
- tomcat 预览出现501错误
- fwrite 0D 0A 问题
- easyui combobox设置选中
- 错误:undefined reference to `_imp___ZN12QSqlDatabase17defaultConnectionE'
- mysql数据类型总结
- 分布式数据库以及CAP理论
- Android开发中的一个小功能 清空搜索框的文字
- Struts2中iterator标签使用radio/input迭代传值
- .Net学习笔记----2015-07-06(Socket概念)