Come si chiama un equivalente a livello di oggetto del sistema Mixin/Traits, esiste un nome Pattern per questo?
-
21-08-2019 - |
Domanda
In precedenza avevo chiesto cosa fossero i Mixin e ho iniziato a capire il significato dello schema.Ma mi sono chiesto se esiste un nome di modello comune per fare qualcosa come Mixins a livello di oggetto anziché a livello di classe.
Pseudo codice (in qualche linguaggio inesistente):
Class MyClass
{
function foo()
{
print("foo")
}
}
function bar()
{
print("bar")
}
object = MyClass.new()
object.xxxx(bar)
object.bar() #output: bar
So che cose del genere possono essere fatte in diverse lingue, in un modo o nell'altro, ma mi chiedo quale sarebbe il nome "standard" per la funzionalità rappresentata da xxxx e qual è il nome di questo modello, se ce n'è uno .
Grazie!
Modificare:Espandendo la risposta di Finnsson, immagino che qualcosa del genere potrebbe essere un altro caso in cui sarebbe:
object.xxxx(OtherClass)
object.otherfoo()
Concatenare sarebbe appropriato?
Citazione:"Concatenazione:Sotto la prototipazione pura, chiamata anche prototipi concatenativi..." -wikipedia
Soluzione
Questo è comune nei linguaggi di programmazione basati su prototipi.Credo che si chiami "import" in Ruby ma è passato un po' di tempo dall'ultima volta che ho programmato Ruby quindi non ne sono sicuro.
In js/ruby scriveresti
object.bar = bar;
object.bar() // output: bar
e poi non si tratta di uno schema reale, poiché è solo un compito (o.bar = bar) che ha perfettamente senso in un linguaggio basato su prototipi.Immagino che xxxx nel tuo esempio potrebbe essere chiamato prototipo o qualcosa di simile (vedi http://en.wikipedia.org/wiki/Prototype-based_programming dove una lingua lo chiama proto).