一、 一个好的系统设计在于他有好的可复用性和较高的维护性。而导致一个软件可维护性较低,随着性能要求变化而腐化的原因有四个:
1.过于僵硬(Rigidity):很难在系统中加入新功能。因为会波及其它模块,最后会变成跨越几个模块的大改动。
2.过于脆弱(Fragility):与过于僵硬同时存在。对一个地方的修改,往往导致看上去没有什么关系的另一个地方发生故障。修改完成前,系统的原始设计师甚至无法预测可能会波及到地方。
3.复用率低(Immobility):当发现有一段代码、函数、模块可用于新功能时,这些已有的代码总是依赖一大堆其它的东西,很难将它们分开。
4.黏度过高(Viscosity):对系统的改动可以采取保存原始设计意图和设计框架的方式,也可以以破坏原始意图和框架的方式进行。前者对系统未来有利,而后者是权宜之计,可以解决短期问题,但会牺牲中长期利益。如果一个系统设计,总是使得第二种办法比第一种容易,就叫黏度过高。
二、所以一个好的软件设计,必须能够允许新的设计要求以较为容易和平稳的方式加入到已有的系统中。同时具有以下特点:
1.可扩展性(Extensibility):新的性能可以很容易地加入到系统中去。这是”过于僵硬“的相反面。
2.灵活性(Flexibility):允许代码修改平稳的发生,而不会波及到其它模块。这是”过于脆弱“的相反面。
3.可插入性(Pluggability):可以很容易将一个类抽出去,同时将另一个有同样接口的类加进来。这是”黏度过高“的相反面。
三、设计原则是在提高一个系统的可维护性的同时,提高可复用性的指导原则。这些原则包括:
1.开闭原则(Open-Closed Principle, OCP)
2.里氏代换原则(Liskov Substitution Principle, LSP)
3.依赖倒转原则(Dependency Inversion Principle, DIP)
4.接口隔离原则(Interface Segregation Principle, ISP)
5.组合/聚合复用原则(Composition/Aggregation Reuse Principle, CARP)
6.迪米特法则(Law of Demeter, LoD)
原文:https://www.cnblogs.com/lyt96/p/12494913.html