前言
Hi,我是Rike,欢迎来到我的频道~
“设计模式”,应该是程序员离不开的一个话题,有些人嗤之以鼻、有些人奉为神作。我们辩证的看,这其实是一门让代码锦上添花的艺术。
设计模式,是为了解决特定类型问题的解决方案,它是一种思想框架,将符合思想的代码规范化、可维护、可扩展,使得成员之间能够更容易协同工作。
本文来谈谈我是怎样理解、如何学习设计模式的。
我的观点
说白了,设计模式是历史上NB的程序员总结出来的传统经验。它是用来解决复杂业务的,简单业务用不到。
一个项目立项的系统结构往往都是非常简单的,在后续版本的迭代中功能会逐步完善。随着需求的增多,各个业务功能之间总会有耦合代码出现,系统开始逐渐复杂起来。
同时,项目是多人协作开发,每个人都会有不同的思路做法,在没有统一规范的情况下,每次需求降低开发成本,只兼容、不考虑系统设计,快速的写快速的丢,系统也就变成大家常说的屎山代码。
我曾在知乎上看见一篇回答中讲到:
- 某些设计上导致的特性是钉子(问题),设计模式是锤子(解决方案)。看不懂《设计模式》,或者觉得设计模式太玄的人,就是拿着锤子四处找钉子。
本质上,我们并不是关注设计模式本身,应该关注的是它在特定领域是怎样解决问题的。如何能够将这些问题方案为我所用才是最终要的。
如何学习设计模式?
我是这样理解的:
从全局角度看:
-
学习设计模式的分类,及其分类的原则
-
模式间的关联关系
- 相互独立
- 关联关系
- 组合关系
- 依赖关系
- 反模式关系
-
新生代设计模式
从单个模式角度:
- 介绍:定义、本质、目的(解决了什么问题)、优缺点、
- 模式原理:UML类图、模式组成(角色、关系、作用)
- 实现方式:应用场景、实现步骤、实际应用案例
- 拓展延伸:符合/违反了哪些设计原则、与其相关的设计模式(关联和区别)、变种和扩展
同时,在学习过程中,去更深层次的理解面向对象的内涵。
本记录中也绘制了plantUML生成的类图,类图参考文档:PlantUML - 类图。
学习设计模式,就是在了解一个优秀软件设计的演变流程,这其中蕴含着许多的大智慧。
学习、总结、复盘、应用,每一步都会使自我认知,有着更深层次的理解。
在此记录分享,希望与君共勉,共同成长。