面向对象的软件设计的两个核心要素就是软件的可维护性和可复用性。在支持可维护性的同时,提高系统的复用性。
一、软件系统的可维护性
软件系统的可维护性具体体现在三个目标上:
- 可扩展性 新的功能可很容易地加入到系统中
- 灵活性 允许代码的修改平稳发生
- 可插入性 可很容易地将一个模块抽出去,然后用另一个实现了同样接口的模块代替。
二、软件系统的可复用性
1.软件复用的好处
软件复用有三大好处:
- 提高生产效率
- 提高软件质量
- 改善系统的可维护性
-
2.传统的复用
传统的复用主要有:
- 代码的粘贴复用
- 算法的复用
- 数据结构的复用
传统的复用方的一个缺陷就是复用常常以破坏可维护性为代价。比如两个模块A和B,他们都使用了C模块。那么当A需要增加一个新的行为时,B有可能不需要,甚至不允许C添加新行为。这时,如果坚持复用,就要牺牲可维护性;如果坚持可维护性,就只有放弃复用。
3.面向对象的复用
面向对象的复用的焦点不是集中在函数和具体的算法等实现细节上,而是集中在最重要的含有宏观商业逻辑的抽象层次上。也就是说复用的焦点发生“倒转”。复用的倒转不是因为实现细节不重要,而是因为这些复用通常做得很好了,而且抽象层次的复用更值得强调,因为它是在提高复用性的同时保证可维护性的关键。
抽象层次通常是较稳定的,如果抽象层次相对独立于具体层次的话,那么具体层次内部的变化就不会影响到抽象层次,所以抽象层次的复用会比较容易。