ewe*_*nli 6 design-patterns programming-languages language-design
有时人们将设计模式称为缺少编程语言功能.为了避免关于什么是设计模式的争论,让我们说我们只考虑原始的GoF模式.例如,单例模式在Scala中消失,Scala使用关键字支持单例对象object.
关于这方面的资源很少,特别是 C2 wiki中的设计模式缺少语言特性,或者设计模式是否真的是语言缺陷?来自SO.但我找不到对这个问题的非自我,客观和全面的报道.
理想情况下,我想要一个带有GoF设计模式(行)和一些主流编程语言(列)的矩阵,其中每个单元格都会引用有关特定编程语言中模式的讨论.
为了避免关于PL要考虑什么的争论,我们也可以解决这个问题并选择:Java(作为静态类型的OO代表),Smalltalk(作为动态类型代表),Haskell(作为功能代表),Scala(作为混合oo/functional representative),Lisp(作为元编程代表),JavaScript(作为基于原型的代表).并留下其他PL作为旁注或评论.我知道我们可以争论这个选择,但对于这些语言而言,这已经非常有趣了.
无论如何,这总是一个悬而未决的问题,但我觉得这样问题,这个问题足够重要,可以得到一个最好的答案.
也许这个矩阵已经存在于某个地方?或者有人有足够的知识来制作它?或者有人热衷于开始并将其作为维基答案,以便其他人可以继续?
设计模式中的模式是人们在使用不同语言编程时使用的不断增长的模式集的子集.作者非常清楚这些模式仅适用于OOP语言,因此在这种情况之外,许多模式都没有意义.
与此同时,OOP语言中不需要其他语言中的大量模式.在C或Scheme中实现时,请考虑对象本身是一种模式.在汇编中,调用堆栈是一种模式.