[1]通俗而详细地阐释了23种设计模式,笔者在阅读过程中收获颇丰。原书是使用Java语言描述的,笔者在本专栏使用C++语言进行转述。
在学习设计模式之前,需要对软件质量属性有充分的认识和理解。实际的工程并不像LeetCode、洛谷、POJ等OJ的算法题,远远不是跑得通就行,必须确保软件需要具备足够的质量。笔者查阅了一些文献,对软件质量有了一定的认识,在本博客中将得到的这些知识进行分享。
综合[2][3][4][5]的观点,可将软件质量属性总结为以下这些方面:
1. 运行期质量属性
2. 开发期质量属性
在实际工程中,斜体的质量属性的“优先级”较低。
保证软件质量最终就是为了最大化程序员的生产力,最小化系统的总运营成本[2]。
学习设计模式之前需要明白这样一条逻辑:软件质量属性→设计原则→设计模式
软件质量属性→设计原则:为了满足上述的软件质量属性,特别是易理解性、可重用性、可修改性、可扩展性、可测试性等开发期质量属性,提出了六大设计原则,即单一职责原则、开闭原则、里氏替换原则、接口隔离原则、依赖倒置原则、迪米特法则。其中,前5个原则合称为SOLID原则。
设计原则→设计模式:所有的23种设计模式都是在这六大设计原则的基础上构建出来的。
[1] 刘韬. 秒懂设计模式[M]. 北京: 人民邮电出版社, 2020.
[2] [美] Robert C. Martin. 架构整洁之道[M]. 孙宇聪, 译. 北京: 电子工业出版社, 2018.
[3] [美] Len Bass, 等. 软件架构实践[M]. 周乐, 译. 北京: 机械工业出版社, 2022.
[4] 希赛教育软考学院. 系统架构设计师教程[M]. 北京: 电子工业出版社, 2017.
[5] [印度] Anand Balachandran Pillai. 软件架构:Python语言实现[M]. 李必信, 等, 译. 北京: 机械工业出版社, 2018.