设计模式-引言

42 阅读3分钟

design_pattern_2

关于设计模式的学习

有人说,没有写过五万行代码,不足以谈设计模式。

有点道理,但要到写完5万行代码,才开始学设计模式,那就太晚了,有点可惜。


我建议有余力、有理想的开发人员,都早点学设计模式。

设计模式,无疑是值得学的。

对于学习设计模式,我个人有这么一点建议:

  • 要刻意地学
  • 要形象地学
  • 要比较着学
  • 要学,也要悟

我学设计模式,最早是在刚毕业那会,看了四大金刚写的《设计模式--可复用面向对象软件的基础》。作者的水平很高,但这本书读起来也比较晦涩。我对作者的崇拜多于对阅读的兴趣,因此终究没有得到真传。但是此书在我脑中我播下了设计模式的种子。


后来,因为工作或兴趣,我前前后后,学了更多有关设计模式的知识。学习时间跨度比较大,公司也不注重代码质量,因此我没有机会在项目中充分实践设计模式。不练就生疏,所以学了新的又忘了旧的,搞来搞去,还是停留在入门的水准。


在本主题,我也是以入门者的身份,以王四办家具厂的故事为统一的大背景,尝试以我的语言,来重新理解设计模式。


为什么要以王四办家具厂为故事大背景?当然为了让你(尽量)秒懂啦。如以某些实际开发需求为故事背景,则难以秒懂。而且如果23个(本主题涉及24个)设计模式,一个模式讲一个前后不相干的需求故事的话,也足以构成理解和记忆上的负担。


希望本主题对你有用!


设计模式分类

设计模式分成了三大类:

1)创建型模式

2)结构性模式

3)行为型模式

这个分类大家都能背下来,然而为什么会是这种分法?

在编程领域,我们常听到:“万物皆对象”。

这句话可以理解成,按照面向对象编程的思想,构成一个系统的基础实体就是对象。对象与对象之间存在结构上的关系(比如头部属于人体),也存在行为上的关系。前一种关系是静态的,后一种关系是动态的。


于是在系统比较复杂时,就不可避免带来以下问题:

  • 对象的创建是复杂的
  • 对象之间的结构关系是复杂的
  • 对象之间的行为是复杂的

设计模式的存在的意义就是解决这三个复杂的问题,以使得代码/系统更容易维护。

于是就诞生了这样的分类方式。

这当然不是唯一正确的分类方式,只能说这是一种广泛接受的分类方式。


下图展示了23种经典设计模式分别从属的分类,本文主要介绍的就是这23种设计模式。

image-20221025103126945


接下来,我们会逐一介绍各个设计模式。