鲍勃大叔:是否有些语言不需要设计模式?


有些语言的特点是否使某些设计模式不复存在?  在我的经验中没有。相反,有一些语言的特点可以促进某些模式的发展。
作为一个简单的例子,看看Strategy策略模式:

1、在C语言中,我们可以通过向策略用户传递一个指向策略函数的指针作为参数,或传递一个数据结构字段来实现这一模式。

2、在Java中,我们可以把一个策略接口的实现传递给策略用户的构造器。

3、在Clojure中,你可以将一个策略函数作为参数或数据元素传递给策略用户。

在上述每种情况下,这都是策略模式。
其重要性在于名称,而不是结构。

无论使用何种语言,开发者都可以讨论策略模式是否是一个合适的解决方案。或者,如果代码中出现了Strategy这个词,那么该代码的读者就会知道其意图。

这种传达意图的能力是设计模式有用的全部原因。这些模式本身并不新鲜,甚至也不太有趣;但为它们命名的能力是一个巨大的优势。

GOF书提供了23种常用模式的规范名称和形式。了解这些名称和形式将极大地提高开发人员相互交流的能力,而不管他们选择什么语言。