Was ist ein Mixin?
In 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 gängige Programmiersprachen die Mixin -Methodik verwenden, gibt es viele weitere, einschließlich C ++ und Java. Im Allgemeinen finden sich Mixins in Skriptsprachen oder in jenen Sprachen, die Skripte erstellen können, wie JavaScript und Perl. Ihre Methoden und Konstanten sind in der Unterklasse enthalten. Ein weiteres einzigartiges Merkmal von Mixin -Klassen ist, dass Methoden zur Laufzeit definiert und an Objekte 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 gemeinsames ProblemEM in mehreren Vererbung ist Unklarheit 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 ein Multipler Vererbung einen sogenannten "Diamond of Death" erzeugen, bei dem eine übergeordnete Klasse A Unterklassen B und C hat, und ein Klasse D erbt aus beiden Klassen B und C. Das Problem in diesem Szenario ist, dass Methoden, die in Klassen A, B und C denselben Namen haben, in Klassen D und C haben, wobei die gleiche Verhandlung derselben Methode ohne klare Zeilen ohne Klarheit ohne Klarheit erzeugt werden. Mixins lösen Sie dieses Problem, indem Sie jede Version der Methode unterschiedlich halten, anstatt zu versuchen, sie als Standardmultiple -Vererbung zu überschreiben.
Mixins überschreiben keine Methoden in Klassen, in die sie geerbt werden. Wenn beispielsweise eine Klasse A eine Methode "myMethod" definierte und ein Mixin B erbte, das auch die Methode "myMethod" definierte, könnten diese beiden Methoden immer noch ohne Mehrdeutigkeit aufgerufen werden, und die Implementierung von "MyMethod" in Klasse Awä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 sie 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.