设计模式,都少不了这四个关键部分

Christopher Alexander 把设计模式的核心思想叫做“重复问题的通用解决方案”,这个在建筑领域得到验证的理念,同样适用于面向对象的代码开发。他所说的“问题”和“解决方案”,被我们直接套用在软件设计中,只是把现实中的墙壁门窗换成了代码里的对象和接口。这个过程的目标就是用一套通用的思路,把重复劳动彻底解决掉。 无论哪种设计模式,都少不了这四个关键部分:一个好记的名字,用来方便团队沟通;问题的定义,用来明确适用的场景;解决方案的框架,不用写具体的代码;还有对效果的评估,用来权衡利弊。其中最难把握的是模式命名,既不能太晦涩也不能太宽泛,否则大家容易重写车轮子。像链表或者哈希表这种语言自带的基础结构,并不属于设计模式的范畴。设计模式真正关注的是解决“如何设计”的问题,而不是“如何实现”。 当所有概念和角色都明确之后,设计模式会给出具体的代码骨架。无论是用C++还是用Smalltalk来写,都能把抽象的想法快速转化成可运行的系统。团队不需要从头开始造轮子,而是直接使用这些骨架来进行测试和复用。之所以选择C++和Smalltalk这两种语言,是因为它们不仅流行,而且社区里有很多现成的经验可供借鉴。正是因为有了足够的资源积累,设计模式才能在更多项目中被广泛应用。