面向复用(Reusability)的软件构造方法
复用:开发出可复用的软件
利:降低重复开发成本
弊:性能差,对普适场景没有针对性
高复用性软件的特点:
- 规模小,简易
- 于标准兼容
- 灵活可变
- 可扩展
- 泛型、参数化
- 模块化
- 变化的局部性
- 稳定
- 丰富的文档
可复用的层级和形态:
10. 源代码
11. 模块:类、接口
12.
13. 库级别:API(jar.)
13.系统级:框架
适用范围↑
复用代价↓
Code Reuse:
- 白盒:源代码可见、可复用、可修改
- 黑盒:源代码不可见、不可修改
库:开发者code→库(开发者构造可运行主体)
框架:开发者code←框架 (框架作为主程序调用开发者程序)
Framework→控制反转:代码操控→第三方容器操控
白盒框架:继承和动态绑定实现
黑盒框架:delegation实现
面向复用编程:抽取共性、识别差异、设计继承树
基于复用编程:搜索选择、适配
外部观察复用性:
- 类型可变
- 功能分组
- 实现可变
- 表示独立
- 共性抽取
替换原则:子条件可以无条件继承父类型