-
1.你必须找到相关的对象,以适当的粒度将它们归类,再定义类的接口和继承层次,建立对象直接的基本关系;
-
2.你的设计应该对手头的问题有针对性,同时对将来的问题和需求也要有足够的通用性;
- 不是解决任何问题都要从头做起,人们更愿意用以前使用过的解决方案,设计模式只是解决方案的抽象。
-
4.设计模式解决特定的设计问题,使面向对象设计更灵活、优雅,最终复用性更好。此本书的目的就是将面向对象软件的设计经验作为模式记录下来。设计模式可以更加简单方便地复用成功的设计和体系结构。
-
- 设计模式4个基本要素:
- 1.模式名称
- 2.适用问题
- 3.解决方案
- 4.效果
-
6 设计模式的编目
- 1.创建型--与对象的创建有关。
设计模式 | 可变方面 |
---|---|
1.Abstract Factory | 产品对象家族 |
2.Builder | 如何创建一个组合对象 |
3.Factory Method | 被实例化的子类 |
4.Prototype | 被实例化的类 |
5.Singleton | 一个类的唯一实例 |
- 2.结构型--处理类或对象的组合。
设计模式 | 可变方面 |
---|---|
1.Adapter | 对象的接口 |
2.Bridge | 对象的实现 |
3.Composite | 一个对象的结构和组成 |
4.Decorator | 对象的职责,不生成子类 |
5.Facade | 一个子系统的接口 |
6.Flyweight | 对象的存储开销 |
7.Proxy | 如何访问一个对象;该对象的位置 |
- 3.行为型--对类或对象怎么交互和怎样分配职责进行描述。
设计模式 | 可变方面 |
---|---|
1.Chain of Responsibility | 满足一个请求的请求 |
2.Command | 何时,怎样满足一个请求 |
3.Interpreter | 一个语言的文法和解释 |
4.Iterator | 如何遍历、访问一个聚合的各元素 |
5.Mediator | 对象间怎样交互,和谁交互 |
6.Memento | 一个对象中哪些私有信息存放在该对象之外,以及在什么时候进行存储 |
7.Observer | 多个对象依赖于另外一个对象,而这些对象又如何保持一致 |
8.State | 对象的状态 |
9.Strategy | 算法 |
10.Template Method | 算法的某些步骤 |
11.Visitor | 某些可作用与一个(组)对象上的 操作,但不修改这些对象的类 |
-
7.设计模式之间的关系
image.png
-
- 设计模式怎么解决设计问题:
- 1.寻找合适的对象(处理请求和操作的关系,处理协作和职责关系);
- 2.决定对象的粒度;
- 3.指定对象接口(指定操作名、参数和返回值);
- 4.描述对象的实现(UML)
- 类继承与接口继承的比较
- 对接口编程,而不是对实现编程
- 运用复用机制
- 继承和组合的比较:各有优缺点,组合优于继承,但要立足于实际情况
- 委托:接受请求的对象将操作委托给它的代理者。组合方法,它使组合具有与继承同样的复用能力
- 继承和参数化类型的比较:参数化类型给我们提供了类继承和对象组合外的第三种方法来组合面向对象系统中的行为。缺点是可读性差和低效。
- 运用复用机制
- 关联运行时刻和编译时刻的结构:即对象彼此之间的关系,关联、引用、组合、聚合诸如此类。
-
10 一些导致重新设计的原因和解决问题的设计模式:
- 1.通过显式的指定一个类来创建对象
- 2.对特殊操作的依赖
- 3.对硬件和软件平台的依赖
- 4.对对象表示或实现的
- 5.算法依赖
- 6.紧耦合
- 7.通过生成子类来扩充功能
- 8.不能方便地对类进行修改
-
11.怎样选择设计模式
- 1.考虑设计模式是怎样解决设计问题的;
- 2.浏览模式的意图部分;
- 3.研究模式是怎样相关联的;
- 4.研究目的相似的模式;
- 5.检查重新设计的原因;
- 6.考虑你的设计中哪些是可变的
-
12.怎样使用设计模式
- 1.大致浏览一遍模式:特别注意其适用性部分和效果部分,确定它适合你的问题;
- 2.回头研究结构部分、参与者部分和协作部分:确保你理解这个模式的类和对象以及他们是怎样关联的。
- 3.看代码示例部分,看看这个模式代码形式的具体例子:研究代码将有助于你实现模式;
- 4.选择模式参与者的名字,使他们在应用上下文中有意义;
- 5.定义类:声明它们的接口,建立它们的继承关系,定义代表数据和对象引用的实例变量。识别模式会影响到的你的应用中存在的类,做出相应的修改;
- 6.定义模式中专用于应用的操作名称:名字一般依赖于应用,使用与每一个操作相关联的责任和协作作为指导,还有你的名字约定要一致。
- 7.实现执行模式中责任和协作的操作:实现部分提供线索指导你进行实现
网友评论