2009-02-26 13 views

Odpowiedz

23

Na poziomie językowo-agnostycznym, mixin po prostu dodaje funkcjonalność do klasy, i jest bardziej dla wygody programisty i uniknięcia duplikacji kodu. Klasa abstrakcyjna (podstawowa) tworzy relację is-a i pozwala na polimorfizm. Jednym z powodów, dla których dziedziczenie jest nadużywane, jest to, że jest to łatwy sposób na implementowanie mixinów bez pisania jakiegokolwiek schematu w językach, które tak naprawdę ich nie wspierają. Problemem jest to, że jesteś deklarowania jest polimorficzny-relacja jako efekt uboczny, dzięki czemu API bardziej kłopotliwe i ewentualnie dodanie niejasności. Stąd nowe języki, takie jak D i Ruby wstawek wsparcia jako natywnych funkcji, umożliwiając wygodny sposób dodać kilka funkcji do klasy bez deklarowania polimorficzny oznacza związek.

+0

+1 Dobre krótkie wyjaśnienie. Te rzeczy COP brzmią fajnie. Chociaż lubię widzieć takie rzeczy, idą w dół do poziomu podstawowego języka. To samo z rzeczami AOP. – BuddyJoe

+0

@Bruno Podstawowy język, taki jak C++? – leeand00

+0

zwięzłe i bardzo jasne. Niesamowite wytłumaczenie! – Hugo

0

Mixin nigdy nie jest rozumiany jako samodzielna klasa. Dodają tylko niektóre funkcje do zadeklarowanej klasy. W języku Python można je łatwo zastosować do dekoratorów klas. Na przykład możesz udekorować swoją klasę za pomocą Singleton mixin, dzięki czemu twoja klasa będzie singletonem.

Powiązane problemy