Skip to content

design-patterns

网络上介绍设计模式的相关书籍和博客已经非常多了,但我还是想记录一下自己在学习设计模式过程中的一些心得。这是我一直想做而还没有去做的事情。那么我所记录的和网络上大多数的相关文章有什么不一样的呢?我想一是这是我自己的心得,我会按照我自己的理解来写,而不是完全照抄大多数的例子;二是我希望更多的记录一些我对设计模式本质的理解。因为我觉得单纯看一些设计模式是没有太多帮助的,很难应用在具体的代码设计中,也不容易在读别人的代码的时候看出来它的设计思想。只有体会到设计模式的本质,才能做到运用自如,举一反三。比如说,有一句很经典话,原话已经不记得了,但大致意思是:

在计算机世界里,没有什么问题是增加一层所不能解决的,如果有,再增加一层

如果理解了这句话,那么对于为什么要抽象基类(封装),为什么要有接口就很容易理解了,对于各种设计模式要解决的问题情景也就很容易理解了。在这种情况下再与标准设计模式进行思路上的碰撞,就会有很多本质上的收获。

关于示例代码的语言选择,网络上大多数是基于JAVA(我个人觉得JAVA在互联网领域有着领导地位,而且往往互联网领域面临着需求多变的情况会非常多,特别需要理解设计模式;而在嵌入式领域,其实很多人还不懂什么是OOP)我从目前自己最熟悉的高级语言C,C++,Python中进行选择,C虽然不是面向对象语言,但是可以按照面向对象的思想去写,但是总觉得表达出来差点儿意思;C++和Python我选择C++(虽然Python我觉得可能会更清晰一些,但总觉得它是脚本语言,随意性相对要大一些)

访问者模式(visitor)

情景假设

解决思路

代码举例

运行结果