软件构造学习笔记(7)--面向复用的软件构造技术

1. 软件复用概述
  • 定义:利用现有软件组件来实现或更新软件系统的过程。
  • 重要性:提升代码质量、安全性和可复用性。
2. 软件复用的优势与劣势
  • 优势
    • 降低成本和开发时间。
    • 提高软件生产率。
    • 减少资源浪费。
    • 提升软件维护质量。
    • 生产出可靠、标准化的软件。
  • 劣势
    • 需要明确定义、开放的设计和文档。
    • 可复用组件设计和构建成本高。
    • 需要组织、技术和流程的变化。
3. 软件复用的层次
  • 源代码级别复用:方法、语句等直接复制粘贴使用。
  • 模块级别复用:通过类、接口实现。
  • 库级别复用:使用API或包。
  • 系统级别复用:利用框架。
4. 可复用组件的特性
  • 通用性:能够适应不同应用场景。
  • 文档完备性:易于理解和使用。
  • 标准化:与现有标准兼容。
5. 可复用组件的开发方法
  • 面向复用编程:系统性地创建可复用资源。
  • 基于复用编程:使用现有资源构建新系统。
6. 软件复用的成本考量
  • 复用度:衡量组件在不同场景下的复用频率。
  • 适应性:需要适配现有系统的程度。
7. 设计可复用的类
  • 继承与重写:扩展现有类的功能。
  • 重载:允许类有多个同名方法。
  • 泛型编程:创建类型安全的数据结构。
  • Liskov替换原则 (LSP):确保子类型能够替换其超类型。
  • 组合与委托:通过组合实现代码复用。
8. 系统级复用:库与框架设计
  • :提供一组可复用的类和方法。
  • 框架:提供可定制的骨架代码。
9. 框架的类型
  • 白盒框架:通过继承和方法重写实现扩展。
  • 黑盒框架:通过实现接口或委托实现扩展。
10. 泛型与协变/逆变
  • 泛型:在编译时类型信息被擦除,类型不变。
  • 协变:子类型可以替换超类型的位置,适用于返回类型。
  • 逆变:超类型可以替换子类型的位置,适用于方法参数。
11. 组合优于继承原则(CRP)
  • 通过对象组合而非类继承来实现多态行为和代码复用。
12. 委派(Delegation)
  • 一个对象依赖另一个对象执行其部分功能,实现代码复用。
13. API设计的重要性
  • 设计原则:易学、易用、难以误用、易于阅读和维护。
  • 公共API:一旦发布,不应随意更改。
14. 框架设计示例
  • 白盒框架示例:通过继承和重写方法实现功能定制。
  • 黑盒框架示例:通过实现插件接口实现功能扩展。
15. 总结
  • 软件复用是提升开发效率和软件质量的关键实践。
  • 设计可复用组件时,需考虑通用性、文档完备性和适应性。
  • 在设计API和框架时,应考虑易用性、灵活性和扩展性。
  • 19
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值