00_怎么学习
下面是参考《设计模式》机械工业出版社
模式之间的关联:看书上page8 图1-1
"设计原则" 高于 "设计模式"
"设计模式" 基于 "设计原则"
一、什么是设计模式?4个问题
-
模式名称
方便我们思考和交流。 -
动机?
何时使用该设计模式? -
解决方案是什么?
设计组成成分,各成分的职责以及协作方式。 -
效果怎么样?
各个模式之间的权衡, 因为并不是一个模式就能完美解决问题,往往是多个模式混用,然后权衡。
二、 重点在哪?
- 考虑“设计模式”是怎样解决设计问题的
- 模式的“意图” :通常使用分类法
- 模式之间怎么“互相关联” ,多看看图1-1(设计模式page8)
- 研究目的相似的模式:也就是分类来看
- 检查重新设计的原因
三、怎么使用----重构获得模式Refactoring to Patterns
推荐阅读书籍《重构》《重构到设计模式》
- 不应该先入为主, 一上来就使用设计模式.
- 没有一步到位的设计模式
- Refactoring to Patterns, 通过已有的代码进行重构, 从而选择模式
- 不可以做极端探讨,比如所有代码都在变化, 所有代码都不变化。 没有意义
- 模式就是要找出,哪些是稳定的,那些是变化的
四、分类
按封装变化角度进行分类
| 分类 | 模式 | |||
|---|---|---|---|---|
| 组件协作 | Template Method | Strategy | Observer/Event | |
| 单一职责 | Decorator | Bridge | ||
| 对象创建 | Factory Method | Abstract Factory | Builder | |
| 对象性能 | Singleton | Flyweight | ||
| 接口隔离 | Facade | Proxy | Mediator | Adapter |
| 状态变化 | Memento | |||
| 数据结构 | Composite | Iterator | Chain of Responsibility | |
| 行为变化 | command | Visitor | ||
| 领域问题 | Interpreter |
目的 分类
(page 20有各模式简介)
- 创建型Creational: 变化对 "创建对象"带来的冲击
- 结构型Structural : 变化对 "对象的结构"带来的冲击
- 行为型Behavioral : 变化对多个交互的对象带来的冲击
范围 分类
- 用于“类” : 编译时确定, 偏静态, 偏继承方案.
- 用于“对象”:运行时, 动态, 偏组合方案.
浙公网安备 33010602011771号