《设计模式-可复用面向对象软件的基础》读后感
谈起设计模式,最经典的莫过于Gof的23种经典设计模式,最近阅读了《设计模式-可复用面向对象软件的基础》一书,感触良多。
这本书在豆瓣上的评分非常高,9.4分,其中使用了C++和SmallTalk两种语言举例解释每一种设计模式,因为这本书应该是1994年写的,估计当时SmallTalk比较流行,但是在今天看来,很多人都没有听说过这门语言。所以可以略过SmallTalk的例子,只看C++部分。
就算只读C++部分,仍然不太好消化,而且举的例子并不能直接运行,可以借助AI(比如ChatGPT和Gemini)来加速自己对设计模式的理解和学习(下面的例子,大部分取自ChatGPT和Gemini)。
另外还可以参考的资料是RefactoringGuru,一个讲述设计模式的网站,在里面可以看到各种编程语言的例子,还有比较有趣的插图。
最大的感触,设计模式并不是生搬硬套,强硬塞到代码里的,不要为了使用而使用,而是当代码量到一定程度时,在进行维护和重构时,会自然而然的上升到设计模式的程度,又或者是之前代码中已经使用过一些设计模式,但是不知道正统的名字叫什么。比如:
- 不想让全局变量污染环境,自然就会使用单例模式;
- 当多个对象共享共同的数据时,自然会用到享元模式;
- 当类之间接口不兼容时,自然会用到转换器模式;
- ……
当然,设计模式并非只有这23种,各个行业领域都有自己的设计模式。而且就算这23种设计模式,学过了并不一定完全理解了,理解了不一定代表会用了,真正在项目代码中灵活运用,仍然还需要付出一些努力。
此处对常见的23种设计模式,使用C++代码做了记录,当忘记时,当在项目中碰到时,可以再回过头来看一下,那时候估计会有另一番理解。