Newsletter
Kompozycja jest dalece bardziej efektywna niż dziedziczenie IT

Kompozycja jest dalece bardziej efektywna niż dziedziczenie

Kompozycja jest dalece bardziej efektywna niż dziedziczenie. Jakiś czas temu, wcale nie tak dawno patrząc na ilość czasu jaką zajmuje się programowaniem, dotarło do mnie właśnie to zdanie w postaci bardziej imperatywnej "Favor 'object composition' over 'class inheritance'" i w niezmiernie krótkim czasie znacząco zmieniło moje poglądy. Grupa ludzi nazywana GoF (Gang of Four) w wciąż za mało sławnej w naszych kręgach książce "Design Patterns" już ponad 7 lat temu zaanonsowała w/w nie jako wzorzec projektowy co sugerował by tytuł książki ale jako generalną regułę która objawia swoje istnienie podczas odkrywania tychże tytułowych wzorców.

Nie ukrywam także, że omawiana reguła za sprawą niewątpliwie świadomych decyzji przerodziła się w ogólne podejście które było i jest obecne w trakcie całego procesu projektowania i tworzenia platformy Streamsoft Next i systemu Streamsoft Verto. Nie będę omawiał wyższości kompozycji nad dziedziczeniem, ufam że wielu czytelników jest już w naszym "klubie", tym spoza polecam w/w książkę jako pozycję pozwalającą w miarę bezboleśnie się nawrócić. Pominę milczeniem też fakt skąd wzięło się moje i nie tylko moje jak mniemam wcześniejsze przywiązanie do mechanizmów dziedziczenia doprawionego polimorfizmem jako głównych technik obiektowych, ale nie mogę nie wyrazić żalu że tak wiele osób tkwi jeszcze w tym „średniowieczu” zaserwowanym nam w procesie instytucjonalnej edukacji.

Kontynuując rozważania o edycji danych, przypomnijmy sobie wpis o SAMIL'u. Bardzo zwięźle rzecz ujmując SAMIL pozwala skomponować panel edycyjny w sposób niewykraczający poza intencje twórcy. Szybko i efektywnie możemy uzyskać coś takiego:

a jak uzyskać coś co jest naszym końcowym celem?

Także szybko i efektywnie, czyli ... skomponować z istniejących już elementów. Jak widzimy nasz panel jest tu tylko jednym z komponentów składowych, czegoś co robi dla nas "tą całą" robotę, pełni rolę kontenera, zarządza nagłówkiem, jego treścią, przyciskami, procesem walidacji, obsługą błędów, uprawnień, układem okna, komunikacją z serwisami itd. W ten oto sposób odkrywamy kolejnego sprzymierzeńca w naszej codziennej pracy VEDAS'a. VEDAS (akronim od Visual Eition of DAta Sources) to mechanizm który pozwala skomponować kompletny moduł edycji dla danej opcji. Komponowanie polega na deklaratywnym ułożeniu paneli SAMIL'a i opcji podrzędnych w gotowym już kontenerze z wskazaniem na ich połączenia. Na w/w przykładzie kontener materializuje się jako okno, jednak należy pamiętać że okno jest tu tylko aktualną konwencją, na pewno nie jedyną możliwą i w przyszłości może ewoluować do innych postaci. Już w następnym wpisie spotkamy się bliżej z VEDAS'em, będzie więcej obrazków i kodu.