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

StackOverflow https://stackoverflow.com/questions/355786

Вопрос

Ранее я спрашивал о том, что такое миксины, и начал понимать суть того, что означает паттерн.Но это заставило меня задуматься, существует ли общее название шаблона для выполнения чего-то вроде 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()

Было бы уместно объединить?

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

Это было полезно?

Решение

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top