2.2 软件设计特征
序言
设计模式能够帮助我们设计出一套具备高复用性、高扩展性的应用。熟练使用设计模式能够让我们的设计更加优雅、代码更具扩展性,能够更好的满足软件设计的某些特征。讲到这里首先让我们了解一下什么是软件设计的特征。
软件设计特征
大家可以先想一下如果自己设计一套系统,应该具备哪些特征:
可用性
提供系统可用性,以保证用户对系统的使用体验。如果用户使用时系统产生系统不可用的情况,那必定一种糟糕的体验。衡量系统可用性的指标有这三个:MTTF、MTTR、MTBF。
MTTF(Mean Time To Failure):平均无故障时间,指的是系统从开始正常运行到出现故障的时间平均值
MTTR(Mean Time To Repair):平均修复时间,指的是系统从故障到修复完成的时间平均值
MTBF(Mean Time Between Failure):平均故障间隔,指的是系统两次故障直接的时间平均值
MTTF和MTBF的数值越高,MTTR的数值越小,表示系统的可用性越好。
复用性
我们正处于软件快速迭代的时期,从需求产生到系统上线速度越快越好,“拿来主义”正满足我们快速迭代的要求。但是“拿来主义”并不是直接的复制、粘贴其他系统的代码,而是要复用其他系统的代码或功能。当我们的设计有了足够高的复用性,当再有类似功能的时候,可以将之前的模块进行组装,从而快速完成项目迭代。
良好的复用性可以极大缩减项目开发的成本和周期。
扩展性
大到系统,小到需求,并不是一成不变的,总会随着用户需求的变更而变更。当产生某些变更的时候(可能是新增新功能,也可能是修改之前的某些功能),如果对你代码改动较大,说明系统的扩展性较差,反之说明系统的扩展性教强。
系统在设计的时候应该对扩展开发,对修改关闭,即开闭原则。(该原则会在第三章进行详细讲解)
易维护性
除了上文提到的需求变更,还少不了系统人员的流动,所以会有不同的人来维护之前的系统(也可能是自己一段时间后,维护自己前几个月的代码),如果在逻辑理解、代码风格等方面给维护人员带来困扰,则说明系统的维护性较差。