GoF在编写《设计模式》一书时,模式的研究才刚刚开始,PLoP也只举行了两届,各种模式和模式语言还处在评审阶段,对模式的形成和书写方式还处在探索阶段,因此,GoF的设计模式与现在一般意义上的模式还是有很大区别的。了解这些区别,有助于更好地理解设计模式的内涵。本节着重指出GoF设计模式和现在的模式理论上的区别和对理解的影响。
GoF设计模式与模式理论的区别是前者更偏重于解决方案。认为设计模式就是解决方案并不是一点道理没有,GoF在《设计模式》一书中承认,与亚历山大的模式相比,他们的设计模式更偏重于解决方案(实现)的描述,而后者更偏重于问题的描述。也正是因为对方案的描述所占的比重远大于对问题的描述,所以在使用设计模式时,难度经常出现在无法判断是否应该使用设计模式,或者使用哪一种设计模式上,而不是在选择模式后的实现上。
因此,在理解设计模式时,重点应放在每个模式解决问题的场合和使用模式需要考虑的因素上。在GoF的设计模式中,动机描述通常是一个具体的实例,需要读者从实例理解动机中隐含的上下文和Forces。当然,给设计模式总结出抽象的上下文和Forces是非常困难的,解决这个问题的另一个方法是给更多的应用实例,使读者可以根据自己的业务背景从相似的实例中得到启发,从而理解其中的含义。
这里需要强调的是,设计模式是模式的一种,模式是一种思考问题的方式和思考结果的表现形式,由于历史的原因,GoF的设计模式与模式理论有一定的区别,但这并不是说设计模式与模式理论有矛盾,而是在理解上,需要按照模式的思想理解设计模式中没有显示表示出来的内涵。