【问题标题】:What do you call an object level equivalent of Mixin/Traits system, is there a Pattern name for it?您将什么称为 Mixin/Traits 系统的对象级等价物,它有 Pattern 名称吗?
【发布时间】:2008-12-10 11:39:32
【问题描述】:

我之前询问过 Mixins 是什么,并且已经开始了解该模式的含义。但这让我想知道是否有一个通用的模式名称可以在 Object 级别而不是 Class 级别执行诸如 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

【问题讨论】:

    标签: language-agnostic design-patterns mixins traits


    【解决方案1】:

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

    在 js/ruby 中你会写

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-01
      • 2012-01-01
      • 1970-01-01
      • 2011-12-10
      • 1970-01-01
      • 2012-10-17
      • 2023-03-28
      相关资源
      最近更新 更多