设计的目标:
1. 可扩展性
2. 灵活性
3. 可插入性
系统的可复用性:
复用性的重要性:
1. 较高的生产效率
2. 较高的软件质量
3. 恰当使用复用可以改善系统的可维护性
传统的复用和面向对象的系统设计中复用的区别
1.传统的复用:代码的剪贴复用;算法的复用;数据结构的复用。
2.面向对象的设计的复用:在OO中数据的抽象化、继承、封装和多态是几个重要的语言特性,这些特性使得一个系统可以在更高的层次上提供可复用性。
数据的抽象化和继承关系使得概念和定义可以复用;
多态性使得实现和应用可以复用;
抽象化和封装可以保持和促进系统的可维护性。
可复用和可维护性的关系
1. 适当的使用复用,可以提高可维护性,即支持可维护性的复用,就是在保持甚至提高系统的可维护性的同时,实现系统的复用。
2. 适当提高系统的可复用性可以提高系统的可扩展性:系统的可扩展性由“开-闭”原则、里氏代换原则、依赖倒转原则和组合/聚合复用原则所保证。
3. 适当提高系统的可复用性,可以提高系统的灵活性。系统的灵活性由“开-闭”原则、迪米特法则、接口隔离原则所保证的。
4. 适当提高系统的可复用性,可以提高系统的可插入性。系统的可插入性由“开-闭”原则、里氏代换原则、组合/聚合复用原则和依赖倒转原则所保证。
复用原则:
1. “开-闭”原则:OCP
2. 里氏代换原则:LSP
3. 依赖倒转原则:DIP
4. 接口隔离原则:ISP
5. 组合/聚合复用原则:CARP
6. 迪米特法则:LoD