2008-12-10 7 views
1

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

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

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

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

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

    object.bar() #output: bar 

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

Спасибо!

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

object.xxxx(OtherClass) 
object.otherfoo() 

конкатенации Было бы целесообразно?

Цитата: «конкатенация: Под чистым прототипирования, который также упоминается как concatenative прототипы ...» -wikipedia

ответ

1

Это является общим в прототипе языках программирования. Я верю, что это называется «импорт» в рубине, но прошло какое-то время с момента последнего запрограммированного рубина, поэтому я не уверен.

В JS/рубин можно было бы написать

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

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