关于设计模式的学习
有人说,没有写过五万行代码,不足以谈设计模式。
有点道理,但要到写完5万行代码,才开始学设计模式,那就太晚了,有点可惜。
我建议有余力、有理想的开发人员,都早点学设计模式。
设计模式,无疑是值得学的。
对于学习设计模式,我个人有这么一点建议:
- 要刻意地学
- 要形象地学
- 要比较着学
- 要学,也要悟
我学设计模式,最早是在刚毕业那会,看了四大金刚写的《设计模式--可复用面向对象软件的基础》。作者的水平很高,但这本书读起来也比较晦涩。我对作者的崇拜多于对阅读的兴趣,因此终究没有得到真传。但是此书在我脑中我播下了设计模式
的种子。
后来,因为工作或兴趣,我前前后后,学了更多有关设计模式的知识。学习时间跨度比较大,公司也不注重代码质量,因此我没有机会在项目中充分实践设计模式。不练就生疏,所以学了新的又忘了旧的,搞来搞去,还是停留在入门的水准。
在本主题,我也是以入门者的身份,以王四办家具厂的故事为统一的大背景,尝试以我的语言,来重新理解设计模式。
为什么要以王四办家具厂
为故事大背景?当然为了让你(尽量)秒懂啦。如以某些实际开发需求为故事背景,则难以秒懂。而且如果23个(本主题涉及24个)设计模式,一个模式讲一个前后不相干的需求故事的话,也足以构成理解和记忆上的负担。
希望本主题对你有用!
设计模式分类
设计模式分成了三大类:
1)创建型模式
2)结构性模式
3)行为型模式
这个分类大家都能背下来,然而为什么会是这种分法?
在编程领域,我们常听到:“万物皆对象”。
这句话可以理解成,按照面向对象编程的思想,构成一个系统的基础实体就是对象。对象与对象之间存在结构上的关系(比如头部属于人体),也存在行为上的关系。前一种关系是静态的,后一种关系是动态的。
于是在系统比较复杂时,就不可避免带来以下问题:
- 对象的创建是复杂的
- 对象之间的结构关系是复杂的
- 对象之间的行为是复杂的
设计模式的存在的意义就是解决这三个复杂的问题,以使得代码/系统更容易维护。
于是就诞生了这样的分类方式。
这当然不是唯一正确的分类方式,只能说这是一种广泛接受的分类方式。
下图展示了23种经典设计模式分别从属的分类,本文主要介绍的就是这23种设计模式。
接下来,我们会逐一介绍各个设计模式。