Что вы называете уровнем объекта, эквивалентным системе Mixin / Traits, есть ли для него имя Pattern? - PullRequest
1 голос
/ 10 декабря 2008

Ранее я спрашивал о том, что такое миксин, и начал понимать суть этого паттерна. Но мне стало интересно, существует ли общее имя шаблона для выполнения чего-то вроде Mixins на уровне объектов в отличие от уровня класса.

Псевдокод (на некотором несуществующем языке):

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

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

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

  object.bar() #output: bar

Я знаю, что подобные вещи могут быть сделаны на нескольких языках, так или иначе, но мне интересно, каково будет "стандартное" имя для функциональности, которую представляет xxxx, и как называется этот шаблон, если есть один.

Спасибо!

Редактировать: Расширяя ответ Финнссона, я думаю, что-то вроде этого может быть другой случай этого будет:

 object.xxxx(OtherClass)
 object.otherfoo()

Будет ли подходить конкатенация?

Цитата: "Конкатенация: при чистом прототипировании, которое также называется конкатенационным прототипом ..." -wikipedia

1 Ответ

1 голос
/ 10 декабря 2008

Это распространено в основанных на прототипах языках программирования. Я верю, что в ruby ​​это называется import, но прошло некоторое время с тех пор, как я последний раз программировал ruby, поэтому я не уверен.

В js / ruby ​​вы бы написали

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

и, кроме того, это не реальный шаблон, поскольку это просто присваивание (o.bar = bar), имеющее смысл в языке, основанном на прототипах. Я думаю, что xxxx в вашем примере можно назвать прототипом или что-то подобное (см. http://en.wikipedia.org/wiki/Prototype-based_programming, где язык называет это proto ).

...