1 什么是设计模式
2 什么是设计模式
3 什么是设计模式
4 什么是设计模式
5 什么是设计模式
6 设计模式怎样解决设计问题
- 1 寻找合适的对象
- 2 决定对象的粒度
- 3 指定对象接口
- 4 描述对象的实现
混入类(mixin class)是给其他类提供可选择的接口或者功能的类。它与抽象类一样不能实例化。混入类要求多继承。
(1) 类继承与接口继承的比较
类继承根据一个对象的实现定义了另一个对象的实现。简言之,它是代码和表示的共享机制。
接口继承(或者子类型化)描述了一个对象什么时候能被用来替代另一个对象。
(2) 对接口编程,而不是对实现编程。
- 5 运用复用机制
(1)继承和组合的比较
通过生成子类的复用被称为“白箱复用”。 “白箱”是相对可视性而言的:在继承方式中,父类的内部细节对子类可见。
对象组合要求被组合的对象具有良好定义的接口。因为对对象内部细节是不可见的,称为“黑箱复用”。
(2)委托
委托是对象组合的特例。
(3)继承和参数化类型的比较
参数化类型(parameterized type),也就是类属(generic)或者模板(template)。
-
6 关联运行时和编译时的结构
聚合意味着一个对象拥有另一个对象或者对另一个对象负责。一般我们称一个对象包含另一个对象或者包含另一个对象的一部分。聚合以为着聚合对象和其所有者具有相同的生命周期。
相识(有时被称为“关联”或者“引用”)关系意味着一个对象仅仅知道另一个对象的存在。相识的对象可能请求彼此的操作,但是它们不为对方负责。相识是一种比聚合要弱的关系,它只标识了对象间的松耦合的关系。 -
7 设计应支持变化
导致软件被重新设计的原因:
<1> 显式地指定一个类来创建对象
<2> 对特殊操作的依赖
<3> 对软硬件平台的依赖
<4> 对对象表示或者实现的依赖
<5> 算法依赖
<6> 紧耦合
<7> 通过生成子类来扩充功能
<8> 不能方便地对类进行修改
一般是没有源代码的类库。
要实现怎样的功能??
怎样去实现我们所要的功能??