《JAVA与模式》学习笔记(一)——软件的可维护性与可复用性

来源:互联网 发布:win 80端口被占用 编辑:程序博客网 时间:2024/06/06 18:39

JAVA与模式》学习笔记(一)

————软件的可维护性与可复用性

 

作者:孤独萤火虫

 

对于面向对象的软件系统设计来说,在支持可维护性(Maintainability)的同时,提高系统的可复用性(Reusability)是一个核心问题。

导致一个软件设计的可维护性较低,也就是说随着性能的要求而“腐烂”的真正原因有四个:

1.    过于僵硬(Rigidity):很难在一个软件系统中加入一个新的性能。

2.    过于脆弱(Fragility):修改一个地方会导致其他地方发生故障,一碰就碎。

3.    复用率低(Immobility):导致只能重新写自己的代码,或剪贴源代码以达到复用。

4.    黏度过高(Viscosity):维护时很难保持原始意图和框架,诱使维护它的程序员采取错误维护方案。

软件复用的好处有:

1.    较高的生产效率。

2.    较高的软件质量。

3.    恰当的使用复用可以改善系统的可维护性。

数据的抽象化和继承关系使得概念和定义可以复用,多态性使得实现和应用可以复用,而抽象化和封装可以保持和促进系统的可维护性。

客户端依赖于一个抽象接口,而不是具体的类,这使得一个具有同样接口的新的类可以代替旧的类,而不至于影响到客户端,这是对抽象接口的复用。

以后将要学习的设计原则包括:

·        “开-闭”原则(Open-Closed Principle  OCP)

·        里氏代换原则(Liskov Substitution Principle  LSP)

·        依赖倒转原则(Dependency Inversion Principle  DIP)

·        接口隔离原则(Interface Segregation Principle  ISP)

·        组合/聚合复用原则(Composition/Aggregation Principle  CARP)

·        迪米特法则(Law of Demeter  LoD)

系统的可扩展性是由OCPLSPDIPCARP所保证的。

系统的灵活性是由OCPLoDISP所保证的。

系统的可插入性是由OCPLSPDIPCARP所保证的。