理解设计模式之美~ :开端

80 阅读3分钟

前言

Hi,我是Rike,欢迎来到我的频道~

“设计模式”,应该是程序员离不开的一个话题,有些人嗤之以鼻、有些人奉为神作。我们辩证的看,这其实是一门让代码锦上添花的艺术。

设计模式,是为了解决特定类型问题的解决方案,它是一种思想框架,将符合思想的代码规范化、可维护、可扩展,使得成员之间能够更容易协同工作。

本文来谈谈我是怎样理解、如何学习设计模式的。

我的观点

说白了,设计模式是历史上NB的程序员总结出来的传统经验。它是用来解决复杂业务的,简单业务用不到。

一个项目立项的系统结构往往都是非常简单的,在后续版本的迭代中功能会逐步完善。随着需求的增多,各个业务功能之间总会有耦合代码出现,系统开始逐渐复杂起来。

同时,项目是多人协作开发,每个人都会有不同的思路做法,在没有统一规范的情况下,每次需求降低开发成本,只兼容、不考虑系统设计,快速的写快速的丢,系统也就变成大家常说的屎山代码。

我曾在知乎上看见一篇回答中讲到:

  • 某些设计上导致的特性是钉子(问题),设计模式是锤子(解决方案)。看不懂《设计模式》,或者觉得设计模式太玄的人,就是拿着锤子四处找钉子。

本质上,我们并不是关注设计模式本身,应该关注的是它在特定领域是怎样解决问题的。如何能够将这些问题方案为我所用才是最终要的。

如何学习设计模式?

我是这样理解的:

从全局角度看:

  • 学习设计模式的分类,及其分类的原则

  • 模式间的关联关系

    • 相互独立
    • 关联关系
    • 组合关系
    • 依赖关系
    • 反模式关系
  • 新生代设计模式

从单个模式角度:

  • 介绍:定义、本质、目的(解决了什么问题)、优缺点、
  • 模式原理:UML类图、模式组成(角色、关系、作用)
  • 实现方式:应用场景、实现步骤、实际应用案例
  • 拓展延伸:符合/违反了哪些设计原则、与其相关的设计模式(关联和区别)、变种和扩展

同时,在学习过程中,去更深层次的理解面向对象的内涵。

本记录中也绘制了plantUML生成的类图,类图参考文档:PlantUML - 类图


学习设计模式,就是在了解一个优秀软件设计的演变流程,这其中蕴含着许多的大智慧。

学习、总结、复盘、应用,每一步都会使自我认知,有着更深层次的理解。

在此记录分享,希望与君共勉,共同成长。