Skip to main content

Was ist ein Mixin?

Bei der Computerprogrammierung ist ein Mixin eine Klasse, die von einer anderen Klasse geerbt wird, aber nicht so instanziiert werden soll.Eine einzelne Klasse kann viele Mixins erben, so dass viele Funktionssammlungen leicht konsolidiert werden können.Obwohl viele gemeinsame Programmiersprachen die Mixin -Methodik verwenden, gibt es viele weitere, einschließlich C ++ und Java.Im Allgemeinen befinden sich Mixins in Skriptsprachen oder jenen Sprachen, die Skripte erstellen können, wie JavaScript und Perl.

Mixins sind insofern einzigartig, als sie während der Zusammenstellung Teil einer Unterklasse werden.Ihre Methoden und Konstanten sind in der Unterklasse enthalten.Ein weiteres einzigartiges Merkmal von Mixin -Klassen ist, dass Methoden definiert und an Objekte zur Laufzeit gebunden werden können.Die meisten Sprachen verwenden einen anderen Ansatz, bindend und definieren Methoden zur Kompilierzeit und nicht zur Laufzeit.Diese Laufzeitbindung ermöglicht es Mixins, sehr flexibel zu sein.

Ein häufiges Problem bei mehreren Vererbung ist die Mehrdeutigkeit beim Aufrufen der Methode, und Mixins können dieses Problem lösen, da sie nicht genau die gleichen Regeln wie die multiple Vererbung folgen.Zum Beispiel kann mehrere Vererbung einen sogenannten Diamanten des Todes erzeugen, bei dem eine Elternklasse A Unterklassen B und C und eine Klasse D erbt, die aus beiden Klassen B und C. Das Problem in diesem Szenario ist, dass Methoden mit demselben gleichDer Name in den Klassen A, B und C kann alle in Klasse D geerbt werden, wodurch mehrere Versionen derselben Methode ohne klare Unterschiede erstellt werden.Mixins lösen dieses Problem, indem jede Version der Methode unterschiedlich bleibt, anstatt zu versuchen, sie als Standard -Mehrfachvererbung zu überschreiben.

Mixins überschreiben keine Methoden in Klassen, in die sie vererbt werden.Wenn beispielsweise eine Klasse A eine Methode definierte, die MyMethod und ein Mixin B erbte, das auch die Methode myMethod definierte, könnten beide Methoden immer noch ohne Mehrdeutigkeit aufgerufen werden, und die Implementierung von MyMethod in der Klasse A wäre immer noch vollständig zugänglich.Genau wie diese Methoden aufgerufen würden, hängt von der Sprache ab, in der das Mixin implementiert wird.

Einige Programmiersprachen, die Mixins wie Java nicht verwenden, verwenden Schnittstellen, um sie nachzuahmen.Schnittstellen in diesen Sprachen emulieren nicht die volle Funktionalität von Mixins, da Schnittstellen nur Konstanten und Methodendeklarationen enthalten können.Mixins hingegen können vollständige Implementierungen von Methoden enthalten.Diese Sprachen, die Mixins nicht unterstützen, haben oft praktikable Alternativen, die überredet werden können, ungefähr dasselbe zu tun.