Wat is een mixin?

In computerprogrammering is een mixine een klasse die wordt geërfd door een andere klasse, maar niet bedoeld is om te worden geïnstantieerd. Een enkele klasse kan veel mixins erven, dus veel collecties functies kunnen gemakkelijk worden geconsolideerd. Hoewel veel gemeenschappelijke programmeertalen de mixinemethode gebruiken, zijn er veel meer die dat niet doen, waaronder C ++ en Java. Over het algemeen worden mixins gevonden in scripttalen of die talen die scripts kunnen maken, zoals JavaScript en Perl.

Mixins zijn uniek omdat ze tijdens de compilatie onderdeel zijn van een subklasse. Hun methoden en constanten zijn opgenomen in de subklasse. Een andere unieke eigenschap van mixineklassen is dat methoden kunnen worden gedefinieerd en gebonden kunnen worden aan objecten tijdens runtime. De meeste talen gebruiken een andere aanpak, bindende en definiërende methoden op compileertijd in plaats van runtime. Met deze runtime -binding kunnen mixins zeer flexibel zijn.

Een gemeenschappelijke problEM in meerdere overerving is dubbelzinnigheid in het aanroepen van methoden, en mixins kunnen dit probleem oplossen omdat ze niet precies dezelfde regels volgen als meerdere erfenis. Meerdere overerving kan bijvoorbeeld een zogenaamde "Diamond of Death" creëren, waarbij een bovenliggende klasse A subklassen B en C heeft, en een klasse D-erfen uit beide klassen B en C. Het probleem in dit scenario is dat methoden die dezelfde naam hebben in klassen A, B en C allemaal kunnen worden geërfd in klasse D, waardoor meerdere versies van dezelfde methode zijn met geen duidelijke methode. Mixins lost dit probleem op door elke versie van de methode duidelijk te houden, in plaats van te proberen ze te overschrijven zoals in standaard meervoudige overerving.

Mixins overschrijven geen methoden in klassen waarin ze worden geërfd. Als een klasse A bijvoorbeeld een methode "MyMethod" definieerde en een mixin B heeft geërfd die ook de methode "MyMethod" heeft gedefinieerd, kunnen beide methoden nog steeds zonder ambiguïteit worden genoemd, en de implementatie van "MyMethod" in Klasse Azou nog steeds volledig toegankelijk zijn. Precies hoe deze methoden zouden worden genoemd, hangt af van de taal waarin de mixine wordt geïmplementeerd.

Sommige programmeertalen die geen mixins gebruiken, zoals Java, gebruiken interfaces om ze na te bootsen. Interfaces in deze talen emuleren niet de volledige functionaliteit van mixins, omdat interfaces alleen constanten en methodeverklaringen kunnen bevatten. Mixins kunnen daarentegen volledige implementaties van methoden bevatten. Die talen die geen mixins ondersteunen, hebben vaak haalbare alternatieven die kunnen worden overgehaald om ongeveer hetzelfde te doen.

ANDERE TALEN