Smalltalk中的设计模式

问题描述 投票:3回答:3

人们常说,设计模式主要用于静态类型语言,如C ++和Java,我也同意这一点。但在this article罗伯特马丁写道

多么奇怪的说。 Smalltalk是一种动态语言,发挥了重要作用。

由于我没有Smalltalk的经验,我想问一下Smalltalk中是否使用了策略或访问者等模式?我觉得你不需要用“动态语言”来理解它们

design-patterns smalltalk
3个回答
7
投票

访问者模式(以及许多其他模式)广泛用于Smalltalk。例如,Smalltalk方法的解析和编译使用访问者。代码着色和格式化也是典型的例子。还有很多其他情况,我提到这些的原因是因为方法编译在开发环境中动态发生(例如,编译器能够在运行时自行修改并立即获取更改)。


6
投票

从历史上看,Kent Beck是第一批将设计模式应用于Ward Cunningham编程的人之一,这主要应用于Smalltalk。 见https://en.wikipedia.org/wiki/Software_design_pattern

他在1996年推出了Smalltalk最佳实践模式,推广了其中一些模式。 见https://en.m.wikipedia.org/wiki/Kent_Beck

即使四人帮的工作是在1994年肯特贝克之前出版的,但在Smalltalk中找到很多这些模式并不奇怪。

具有讽刺意味的是,这些设计模式一旦应用于静态类型语言就会有很大帮助。


4
投票

你提到的文章很好地解释了设计模式是什么,我会在你的问题的上下文中添加一些细节。

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.