可复用性:
- 面向可复用性编程
- 基于复用的编程
复用性的原因:
- 降低成本和开发时间
- 经过充分的测试,可靠、稳定
- 标准化:在不同应用中保持一致
特点:开发成本高于一般软件的成本:要有足够高的适应性;性能差些:针对更普适场景,缺少足够的针对性
白盒复用/黑盒复用
- 代码层级的复用
- 模块层级的复用:类、接口(继承,实现,重写)
- 框架层级的复用:API,库,Framework
协变,(跟强的返回值条件),反协变(更弱的参数条件)
ps:java不支持反协变, 并且会将反协变认定为重载
委托
——永远都神
子类中只需要复用父类的一小部分方法
一个类不需要继承另一个类的全部方法,通过委托机制调用方法
委托发生在object层面,继承发生在class层面
设计模式
——需求层面的复用
- 结构型模式:Adapter适配器模式、Decorator装饰器模式、 Facade外观模式
- 行为类模式:策略模式、模板模式、迭代器模式
Adapter适配器模式:接口的适配
!Decorator装饰器模式:
为对象增加不同侧面的特性—— 对每一个特性构造子类,通过委派机制增加到对
象上
Facade门面模式:
将多个接口合并为一个接口,通过穿入参数确定接口类型。
策略模式
模版模式:使用继承和重写(白盒框架)
迭代器模式:迭代器是可变类,使用删除操作时应使用迭代器内的删除操作