Skip to main content

Hvad er en mixin?

I computerprogrammering er en mixin en klasse, der er arvet af en anden klasse, men ikke er beregnet til at blive instantieret.En enkelt klasse kan arve mange mixins, så mange samlinger af funktioner kan let konsolideres.Selvom mange almindelige programmeringssprog bruger Mixin -metodikken, er der mange flere, der ikke gør det, inklusive C ++ og Java.Generelt findes mixins på scripting -sprog eller de sprog, der har evnen til at oprette scripts, såsom JavaScript og Perl.

Mixins er unikke, idet de bliver en del af en underklasse under samlingen.Deres metoder og konstanter er inkluderet i underklassen.En anden unik egenskab ved mixin -klasser er, at metoder kan defineres og bundet til objekter ved runtime.De fleste sprog bruger en anden tilgang, binding og definerende metoder på kompileringstid snarere end runtime.Denne runtime -binding gør det muligt for mixins at være meget fleksibel.

Et almindeligt problem i flere arv er tvetydighed i metodekald, og mixins kan løse dette problem, fordi de ikke følger nøjagtigt de samme regler som flere arv.F.eksNavn i klasser A, B og C kan alle arves i klasse D, hvilket gør flere versioner af den samme metode uden klare sondringer.Mixins løser dette problem ved at holde hver version af metoden distinkt i stedet for at forsøge at overskrive dem som i standard multiple arv.

Mixins tilsidesætter ikke metoder i klasser, hvor de er arvet.For eksempel, hvis en klasse A definerede en metode MyMethod og arvet en mixin B, der også definerede metode MyMethod, kunne begge disse metoder stadig kaldes uden tvetydighed, og implementeringen af MyMethod i klasse A ville stadig være helt tilgængelig.Præcis hvordan disse metoder vil blive kaldt afhænger af det sprog, hvor mixin implementeres.

Nogle programmeringssprog, der ikke bruger mixins, såsom Java, bruger grænseflader til at efterligne dem.Grænseflader på disse sprog emulerer ikke den fulde funktionalitet af mixins, fordi grænseflader kun kan indeholde konstanter og metodeklarationer.Mixins kan på den anden side indeholde fulde implementeringer af metoder.De sprog, der ikke understøtter mixins, har ofte levedygtige alternativer, der kan coaxes til at gøre omtrent den samme ting.