提高软件系统的Maintainability和Reuseability是软件开发始终追求的目标。也是面向对象设计最需要考虑的内容。
一般来说,一个软件的开发非常快的。但他的维护时间将会非常非常的长。这时候一个良好的设计,将变得非常非常的重要。一个好的软件设计,必须能够允许新的设计需求以较为容易的方式加入到现有的系统中去,从而使得这个软件从新焕发青春。
需求的不断增加和更改是使得软件变得丑陋不堪的罪魁祸首。任何一个刚刚新建的软件设计都是非常美妙的,但也经受不住需求的不断更改,即使再美丽的设计在经过几次更改之后,都难免其害。还有就是维护的设计师一般都是不是原始的设计师。即使原来的设计能够容纳新的功能,但由于维护设计师没有找到原有设计师的思路,也就不能很好的发挥原有设计的优点。而自己修补的设计又不能形成体系。这样的修补只能使得系统越来越难看,最终使得整个系统混乱不堪。
使得整个系统的Maintainability较低的真正元凶是:rigidity(僵硬),Fragility(脆弱),Immobility(复用低)和Viscosity(粘贴度高)。
目标:可扩展性,灵活性,可插入性。
系统中的几个设计原则:
“开闭”原则OCP
里氏代换原则LSP
依赖倒转原则DIP
接口隔离原则ISP
组合/聚合复用原则CARP
迪米特发展LoD