用Go语言实现Design Patterns

王海磊提醒我注意一篇论文:GoHotDraw: Evaluating the Go Programming Language with Design Patterns。这篇论文里介绍了作者用 Go 语言实现了三种常见的 design patterns:singleton、adaptor 和 template method。作者说,其实他实现了所有的 23 种 GoF design patterns,文中只说了上述三种。

除了这篇论文,我注意到这篇blog:Design patterns in Go programming language 里,作者介绍了如何用 Go 实现另外三种 design patterns:command, strategy 和 factory。

在我的这篇幻灯片里,我本来试图从 design patterns 如何用 Go 实现的角度来介绍 Go 语言。但是因为总结的不够,所以没有这么写。希望接下来能总结一下如何使用 Go 语言。

当然,纯粹的考虑一种语言如何实现一种 pattern 是机械的。一种观点是:如果需要一种 pattern,则说明使用的语言缺乏对应的语法。比如,这篇题为 The (lack of) design patterns in Python 幻灯片里,作者 Joe Gregorio 展示了一些用 Java 和 C++ 需要专门描述的 designs,如果用 Python,则只需少数几行,以至于没必要总结成一种 pattern。

在我的这篇博文里,列了 Peter Novig 的一个幻灯片,其中说 23 种常见 design patterns 中的 16 种,在 Lisp 语言种都有语法可以支持。