Skip to main content

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 veel voorkomend probleem bij meerdere overerving is ambiguïteit in methodeaanroepen, en mixins kunnen dit probleem oplossen omdat ze niet precies dezelfde regels volgen als meerdere overerving.Meerdere overerving kan bijvoorbeeld een zogenaamde diamant van de dood creëren, waarbij een ouderklasse A subklassen B en C heeft, en een klasse D uit zowel klassen B als C. Het probleem in dit scenario zijn die methoden die hetzelfde hebbenNaam in klassen A, B en C kan allemaal worden geërfd in klasse D, waardoor meerdere versies van dezelfde methode worden gemaakt zonder duidelijk onderscheidingen.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 -mymethode definieerde en een mixin B heeft geërfd die ook de methode MyMethod definieerde, zouden beide methoden nog steeds zonder dubbelzinnigheid kunnen worden opgeroepen, en de implementatie van MyMethod in Klasse A zou 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.