Wie nennt man ein Objektebenenäquivalent des Mixin/Traits-Systems? Gibt es einen Musternamen dafür?
-
21-08-2019 - |
Frage
Ich habe zuvor gefragt, was Mixins sind, und habe begonnen, den Kern dessen zu verstehen, was das Muster bedeutet.Aber ich habe mich gefragt, ob es einen gemeinsamen Musternamen gibt, um so etwas wie Mixins auf Objektebene und nicht auf Klassenebene auszuführen.
Pseudocode (in einer nicht existierenden Sprache):
Class MyClass
{
function foo()
{
print("foo")
}
}
function bar()
{
print("bar")
}
object = MyClass.new()
object.xxxx(bar)
object.bar() #output: bar
Ich weiß, dass solche Dinge auf die eine oder andere Weise in mehreren Sprachen erledigt werden können, aber ich frage mich, wie der „Standard“-Name für die Funktionalität lautet, die xxxx darstellt, und wie dieses Muster heißt, falls es eines gibt .
Danke!
Bearbeiten:Wenn ich Finnssons Antwort erweitere, denke ich, dass so etwas ein weiterer Fall davon sein könnte:
object.xxxx(OtherClass)
object.otherfoo()
Wäre eine Verkettung angemessen?
Zitat:"Verkettung:Unter reinem Prototyping versteht man auch verkettete Prototypen …“ -wikipedia
Lösung
Dies ist in prototypbasierten Programmiersprachen üblich.Ich glaube, dass es in Ruby „Import“ heißt, aber es ist schon einige Zeit her, seit ich Ruby das letzte Mal programmiert habe, also bin ich mir nicht sicher.
In js/ruby würden Sie schreiben
object.bar = bar;
object.bar() // output: bar
und dann ist es kein wirkliches Muster, da es nur eine Zuweisung (o.bar = bar) ist, die in einer prototypbasierten Sprache vollkommen Sinn macht.Ich denke, xxxx könnte in Ihrem Beispiel als Prototyp oder etwas Ähnliches bezeichnet werden (siehe http://en.wikipedia.org/wiki/Prototype-based_programming wo eine Sprache dies nennt Proto).