Design patterns Smalltalk中的设计模式 P>经常说,设计模式主要用于静态类型的语言,如C++和java,我也同意。但罗伯特·马丁在书中写道

Design patterns Smalltalk中的设计模式 P>经常说,设计模式主要用于静态类型的语言,如C++和java,我也同意。但罗伯特·马丁在书中写道,design-patterns,smalltalk,Design Patterns,Smalltalk,说这话真奇怪。Smalltalk是一种动态语言,发挥了重要作用 由于我没有Smalltalk方面的经验,我想问一下,在Smalltalk中是否大量使用了策略或访问者等模式?我认为你不需要“动态语言”中的访问者模式(以及许多其他模式)在Smalltalk中广泛使用。例如,Smalltalk方法的解析和编译使用访问者。代码着色和格式也是典型的例子。还有许多其他情况,我之所以提到这些情况,是因为方法编译是在开发环境中动态进行的(例如,编译器可以在运行时修改自身并立即获取更改)。历史上,Kent Bec

说这话真奇怪。Smalltalk是一种动态语言,发挥了重要作用


由于我没有Smalltalk方面的经验,我想问一下,在Smalltalk中是否大量使用了策略或访问者等模式?我认为你不需要“动态语言”中的访问者模式(以及许多其他模式)在Smalltalk中广泛使用。例如,Smalltalk方法的解析和编译使用访问者。代码着色和格式也是典型的例子。还有许多其他情况,我之所以提到这些情况,是因为方法编译是在开发环境中动态进行的(例如,编译器可以在运行时修改自身并立即获取更改)。

历史上,Kent Beck是最早将设计模式应用于Ward Cunningham编程的人之一,这主要应用于Smalltalk。

他在1996年出版的《Smalltalk最佳实践模式》一书中推广了其中一些模式。

即使《四人帮》是在肯特·贝克的书出版之前于1994年出版的,但在《Smalltalk》中发现这么多这样的模式也不足为奇


具有讽刺意味的是,这些设计模式在应用于静态类型语言时对它们有着巨大的帮助。

您提到的这篇文章很好地解释了什么是设计模式,我将在您的问题中补充一些细节

设计模式通过基本上降低耦合和增加内聚性,为提高软件质量提供了众所周知的方法。这两个属性是任何软件的固有属性,无论它是用静态类型、动态类型、基于消息/面向对象、函数式还是命令式语言编写的

虽然动态类型语言和静态类型语言之间的模式可能略有不同,但它们提供了代码设计的有用概念

事实上,许多(如果不是全部的话)原设计模式书的作者都是非常精通Smalltalk的人,并且可能在使用Smalltalk代码时发现了这些模式。在原著中有数百次提到Smalltalk,许多原版模式都应用于Smalltalk系统


如果打开任何Smalltalk,访问者都是最容易区分的,因为它有一个特殊的访问/接受api,用于遍历许多树状结构,如编译器中的解析树,或用户界面元素层次结构中的节点。

我还想添加我的设计模式历史视图。当GOF书出版时,SMALLATE和C++等语言变得非常流行,但是通过使用多态性来编写设计良好的代码的技术仍然不常见。设计模式在这方面尤其强大:它展示了多态性应该如何被使用。天哪,那篇文章真是个救命稻草。因为它以Smalltalk来捍卫设计模式,所以还应该注意到Alan Kay(Smalltalk的发明者)轻视设计模式: