有时,人们将设计模式称为缺少编程语言功能。为了避免关于什么是设计模式的争论,让我们假设我们只考虑原始的GoF模式。例如,单例模式在使用关键字object
支持单例对象的Scala中消失。作为(缺少)语言功能的设计模式
关于此问题的资源很少,特别是来自C2 wiki的Are Design Patterns Missing Language Features或来自SO的Are design patterns really language weaknesses?。但我无法找到对这个问题的非客观,客观和全面的报道。理想情况下,我想要一个带有GoF设计模式(行)和一些主流编程语言(列)的矩阵,其中每个单元格都会引用关于特定编程语言中模式的讨论。我们也可以解决这个问题并选择:Java(作为静态类型的OO代表),Smalltalk(作为动态类型代表),Haskell(作为功能代表),Scala (作为混合oo /功能代表),Lisp(作为元编程代表),JavaScript(作为基于原型的代表)。并留下其他PL的旁注或评论。我知道我们可以争论这个选择,但这对于这些语言来说已经很有意思了。
无论如何,这将永远是一个悬而未决的问题,但我觉得就这样问,这足够集中,有一个最佳答案。
也许这个矩阵已经存在的地方?或者有人有足够的知识来制作它?或者有人足够敏锐地开始并使其成为维基答案,以便其他人可以继续?
而不是在SO上提出一个开放式的主观问题,你为什么不写一个博客文章,并发现它,因为你发现一个模式的新实现? – slugster 2010-10-27 01:32:04
这不可能有一个最佳答案。我会投票给社区wiki。 – 2010-10-27 01:33:14
@slugster我的想法确实是撰写这样一篇博客文章(或我的一位朋友会这样做),而问题是收集有关特定模式w.r.t对给定语言的最佳讨论的参考。然后我可以将它编译成博客条目。同时,我可能也会回答我自己的问题,并草拟矩阵的草稿。 – ewernli 2010-10-27 02:05:29