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.
:-)

Reklamy

3 uwagi do wpisu “Mix-ins

  1. 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) 🙂

    Polubienie

  2. 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. 😛 (głównie z Daily Python-URL, ale nie tylko)

    Polubienie

Co o tym sądzisz?

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s