Zaloguj się

Jog Jajcusia

xmpp:jajcus@jajcus.net

Powrót na stronę główną

Mix-ins

Gdy w CJC użyłem osobnej klasy (nazwijmy ją A) do rozszerzenia funkcjonalności innej klasy (B), ale tak, że to B dziedziczyło po A, to myślałem że stosuję jakiś dziwny, brudny trik dla własnej wygody. Później czytając dokumentację do pylinta spotkałem się z określeniem mix-in class, nie wiedziałem co to jest, ale tak jakoś mi się skojarzyło z tym co zrobiłem w CJC.

Teraz coś podobnego chcę zrobić w PyXMPP, aby podzielić jeden wielki moduł pyxmpp.stream na mniejsze kawałki. Przypomniałem sobie o mix-in class i wrzuciłem to w Google. Okazało się, że miałem rację. Dowiedziałem, że to znana technika programowania obiektowego, która wcale nie jest zła. Znalazłem nawet artykuł o tym jak używać mix-ins w Pythonie. Rzeczywiście Python bardzo ułatwia stosowanie tej techniki.

No to teraz, gdy się podszkoliłem, mogę z czystym sumieniem wziąć się za wydzielanie StreamSASLMixIn i StreamTLSMixIn. :-)


Komentarze

zgoda (jarek)

21 września 2004 22:10:52

Ostrożnie z tym. Klasy domieszkowe tylko tak niewinnie wyglądają...
Ale czasem jest to wygodniejsze, od interfejsów.

Jajcus

21 września 2004 22:17:14

Ja stosuje to w najprostszej postaci (statyczne dziedziczenie), aby nie mieć jednego modułu z 2000 linii i jedną wielką klasą (w PyXMPP), albo odzielić część klasy z dodatkowymi zależnościami od zewnętrznych modułów (CJC).
I dzięki za polską nazwę (nawet mi się podoba) :)

jpc

22 września 2004 10:42:49

Dzięki za info, bo nie miałem pojęcia o tej technice, a całkiem mi się ona podoba (szczególnie uwzględniając dynamiczną naturę Pythona). Przy okazji - miałem iść spać przed 12 a poszedłem przed 2 i dorzuciłem sobie ~30 linków do bookmarków. Tak to jest jak się człowiek zawędruje w internecie odwiedzając ciekawe strony. :P (głównie z Daily Python-URL, ale nie tylko)

Dodaj nowy komentarz

Dostępne jest formatowanie Textile

Podpis:
Treść:
Strona WWW (opcjonalnie):
Wpisz kod:code
 
 

Śledzenie komentarzy (RSS) TrackBack URI


Jesteście obserwowani...