面向复用编程
复用性
软件复用是使用现有软件组件实现或更新软件系统的过程。
复用主要用在
- 为了复用编程
- 基于复用编程
其优势在于 - 成本有效性和及时性
- 可生成可靠的软件
- 标准化
同时带来了一些弊端
- 可复用的组件时空性能往往不如定向开发的同等功能软件
其评价标准为
- 复用频度
- 复用成本
对于可复用性,我们期望它:
- 简单
- 可移植性和兼容性好
- 灵活
- 可扩展
- 通用和参数化
- 模块化
- 将变化限制在局部
- 稳定
复用分为:
- 白盒复用:复用代码是可用的,但通常需要一些小改造或适应
- 黑盒复用:通过提供一些“粘合”以组合现有代码的形式重用,但不必更改代码本身,通常是因为您无法访问代码
在层次上又分为:
- 代码级
- 存在问题如下问题
- 需要维护多处修改的一致性问题
- 过程具有高风险
- 需要了解工作原理
- 需要访问源代码
- 存在问题如下问题
- 模块级
- 通过类与接口
- 库级
- API和包
- 系统级
- 框架
在模块级复用上有如下方法
- 继承
- 在java中就是extend
- 委托
- 调用
- 联合(老师之于学生,学生之于课堂)
- 包含(人之于心脏)
库:一系列方法和类
对于一个优秀的API需要:
- 易于学习
- 易于使用
- 难以误用
- 易于保证代码的可读性
- 足以满足要求
- 易于升级
- 适合阅读者
系统级复用
框架:应用框架是包含了接口、抽象类和具体类的可复用程序,使用时需要在其基础上补充所需要的设计元素。
框架与库的对比
类库:
- 较少特定领域
- 提供较小的重用范围。
- 类库是被动的; 对控制流没有约束。
- 被使用者调用
框架:
- 类为一系列相关应用程序进行合作。
- 框架是活跃的; 影响控制流程。
- 调用使用者代码