你怎么称呼对象等级的Mixin / Traits系统,它有一个模式名称吗?

时间:2008-12-10 11:39:33

标签: language-agnostic design-patterns mixins traits

我之前曾询问过什么是Mixins,并且已经开始了解该模式的含义。但它让我想知道是否有一个常见的模式名称,用于在对象级别而不是类级别执行类似Mixins的操作。

伪代码(某些不存在的语言):

  Class MyClass
  {
     function foo()
     {
        print("foo")
     }
  }

  function bar()
  {
     print("bar")
  }

  object = MyClass.new()
  object.xxxx(bar)

  object.bar() #output: bar

我知道这样的事情可以用几种语言,以某种方式完成,但我想知道xxxx所代表的功能的“标准”名称是什么,这个模式的名称是什么,如果有一个。

谢谢!

编辑:扩展finnsson的答案我猜这样的事情可能是另一种情况:

 object.xxxx(OtherClass)
 object.otherfoo()

连接是否合适?

  

引用:“连接:在纯粹的原型设计下,也被称为连接原型......” - wikipedia

1 个答案:

答案 0 :(得分:1)

这在基于原型的编程语言中很常见。我相信它在红宝石中被称为“导入”,但是自从我上次编写ruby之后已经有一段时间了,所以我不确定。

在js / ruby​​中你会写

object.bar = bar;
object.bar() // output: bar

并且它不是真正的模式,因为它只是一个基于原型的语言中的赋值(o.bar = bar)。我猜你的例子中的xxxx可能被称为原型或类似的东西(请参阅http://en.wikipedia.org/wiki/Prototype-based_programming,其中一种语言称为 proto )。