Posted on 2005-08-24 10:52
飞马 阅读(241)
评论(0) 编辑 收藏 所属分类:
Java
设计模式---可复用面向对象软件的基础
1 设计模式四要素
模式名称、问题、解决方案、效果
2 设计模式描述
模式名和分类、意图、别名、动机、适用性、结构、参与者、协作、效果、实现、代码示例、已知应用(至少两个)、相关模式
3 设计模式编目
即设计模式分类
4 设计模式作用
1)寻找合适的对象
2)决定对象的粒度
3)制定对象接口
4)描述对象的实现
5)运用复用机制
6)关联运行时刻和编译时刻的结构
7)设计应支持变化
5 重要概念
1 )类继承与接口继承
类继承根据一个对象的实现定义了另一个对象的实现。它是代码和表示的共享机制。
接口继承(子类型)描述了一个对象什么时候能被用来替代另一个对象。
2)针对接口编程,而不是针对实现编程。
3)3种复用技术
继承、组合(委托是组合的一种)与参数化类型
组合技术是通过获得对其他对象的引用而在运行时刻动态定义的。允许你在运行时刻改变被组合的行为,但是它存在间接性,比较低效。
继承在编译时刻静态定义的,可直接使用。允许你提供操作的缺省实现,并通过子类重定义这些操作。破坏了封装性。
参数化类型允许你改变类所用到的类型。如generic(Ada,java预留)和templates(C++)
继承和参数化类型都不能在运行时刻改变。
注意:优先使用对象组合,而不是类继承。
委托(delegation)使组合具有与继承同样的复用能力。
4)2种复用层次
代码复用(如工具箱、类库)、设计复用(如框架)
5)模式设计应该封装变化 P20
6)聚合(aggregation) 与相识(acquaintance,也称为:关联、引用)
聚合意味着一个对象拥有另一个对象或对另一个对象负责。一般我们称一个对象包含另一个对象或者是另一个对象的一部分。聚合意味着聚合对象和其他所有者具有相同的生命周期。
相识意味着一个对象仅仅知道另一个对象。相识的对象可能请求彼此的操作,但是他们不为对方负责。相识是一种比聚合要弱的关系,它只标示对象间松耦合关系。
聚合还是相识是由你的意图而不是由显式的语言机制决定的。它们的区别在编译时刻(源代码)很难看出来。