问题 mixin被认为是一种设计模式吗?


mixin被认为是一种设计模式吗?结构?


3758
2018-02-12 21:07


起源

考虑谁?我认为没有正式的设计模式列表。 - David Thornley
当然,有正式的设计模式列表,从“设计模式:可重复使用的面向对象软件的元素”和年轻文献开始。 - Angel O'Sphere
而且,除了书中提到的23种之外,还有许多其他的设计模式。我认为,mixin可能在某种程度上被认为是一种设计模式。 - Yuan Wen


答案:


他们是一种语言功能。 “模式”与特征不同,因为它解决了一组可能以相互矛盾的方式影响情境的力量。特征,无论是否存在,都倾向于 创建 模式解决的力量。许多设计模式(Double Dispatch是一个很好的例子)开始解决语言限制(在这种情况下,方法调度单个参数)。


7
2018-02-12 22:07



不是在.NET中。它更像是一种模式。 - 4thSpace
如果你知道答案,你为什么问这个问题? ;) - Morendil
关键字是“喜欢”。这听起来不确定。 - 4thSpace
看起来我们又回到了主观性,所以让我们把它放在原处。回答你的问题 - 什么都没有。你会说mixins与访客模式相似吗?在.NET中通过扩展 - 装饰器? - 4thSpace
如果您的语言支持mixins,则不需要模式。否则,你通常必须扭转自己以使其发生的结点被称为模式。许多GoF模式不存在于函数式语言中,只存在于面向对象的语言中,因为函数式语言具有一级函数。同样,如果您的语言支持mixins,唯一的模式是“使用它”。如果没有,但它是图灵完整的语言,那么无论如何都存在一些复杂的方法。这就是我们所说的模式。 - candied_orange


是的,它是在Ruby中。

Ruby中的设计模式


4
2018-02-12 21:13





是的,它在D.

“设计模式是软件设计中常见问题的一般可重用解决方案” - 维基百科

D被编译为机器代码,并且使用mixins可以使用它来使模板比在C ++中更有用。

http://www.digitalmars.com/d/1.0/template-mixin.html


3
2018-02-12 21:25





Mixins不是设计模式。大多数时候他们是语言功能!! 例如。在语言D“mixin”是一个关键字。使用关键字作为其预期的目的是没有模式。关键字/语言特征的典型用法可能被称为“成语”。

hierarchie是“没有”,成语,设计模式,建筑模式。


2
2018-05-25 13:02