这是软件构造的最后一篇博客了,明天就要考试了,祝自己有个好成绩吧。
第九章:面向复用的软件构造技术
1.面向复用编程:为了开发出可复用的软件。
基于复用编程:利用可复用的软件搭建应用系统
2.LSP
子类型多态:客户端可用同一的方式处理不同类型的对象
LSP的内容
(1)子类型可以增加方法,但不可删除
(2)子类型需要实现抽象类型(接口,抽象类)中所有未实现的方法
(3)子类型中重写的方法必须有相同或子类型的返回值,或者符合co-variant的参数
(4)子类型中重写的方法必须使用同样类型的参数,或者符合co-variant的参数
(5)子类型中重写的方法不能抛出额外的异常
简单记为:
更强的不变量;
更弱的前置条件;
更强的后置条件
3.协变
父类到子类:越来越具体
返回值类型:不变或者更具体
异常的类型:不变或者更具体
逆变与协变相反
4.通配符
?
无限制通配符
下限通配符<? super A>
上限通配符<? extends A >
5.委托
一个对象请求另一个对象的功能
如果子类只需要复用父类的一小部分方法,可以不需要使用继承,而是通过委托机制来实现
委托发生在object层面,继承发生在class层面
6.白盒框架和黑盒框架
白盒框架主要利用继承实现
黑盒框架主要利用委托组合实现。