2009-02-26 14 views

Antwort

23

Auf einer Sprache-agnostic Ebene, fügt ein Mixin einfach Funktionalität zu einer Klasse hinzu, und ist mehr für Programmierer Bequemlichkeit und Vermeidung von Code-Duplizierung. Eine abstrakte (Basis-) Klasse bildet eine Is-a-Beziehung und ermöglicht Polymorphie. Ein Grund, warum Vererbung überstrapaziert wird, besteht darin, dass es eine einfache Möglichkeit ist, Mixins zu implementieren, ohne ein Vorwort in Sprachen zu schreiben, die sie nicht wirklich unterstützen. Das Problem ist, dass Sie eine polymorphe ist-a-Beziehung als Nebeneffekt deklarieren, was Ihre API verwirrender macht und möglicherweise Mehrdeutigkeit hinzufügt. Daher unterstützen neuere Sprachen wie D und Ruby Mixins als native Funktionen, was eine praktische Möglichkeit bietet, einer Klasse eine Reihe von Funktionen hinzuzufügen, ohne eine polymorphe is-a-Beziehung zu deklarieren.

+0

+1 Gute kurze Erklärung. Dieses COP-Zeug klingt cool. Obwohl ich gerne sehe, dass sich diese Art von Dingen bis auf das Kernniveau der Sprache erstreckt. Gleiches mit AOP-Zeug. – BuddyJoe

+0

@Bruno Eine Kernsprache wie C++? – leeand00

+0

kurz und sehr klar. Tolle Erklärung! – Hugo

0

Mixin ist nie als eigenständige Klasse gedacht. Sie fügen der deklarierten Klasse nur einige Funktionen hinzu. In Python können sie einfach von Klassen-Dekoratoren angewendet werden. Zum Beispiel könnten Sie Ihre Klasse mit Singleton Mixin dekorieren, was Ihre Klasse zu einem Singleton macht.

Verwandte Themen