Dlaczego warto stosować wzorzec dekorator

Co zyskujesz stosując wzorzec dekorator?


Chciałbym podzielić się spostrzeżeniami jakie korzyści daje nam używanie wzorców, w jaki sposób wpływają na to że nasz kod jest bardziej elastyczny, spełnia zasady SOLID i paradygmatu programowania obiektowego.

Jest masa wpisów gdzie zostało napisane jakie problemy dekorator rozwiązuje i jak go zaimplementować w danym języku. Tutaj będzie uniwersalniej.

Dekorator spełnia założenia "kompozycja ponad dziedziczenie".

Skoro już szukamy dekoratora to zapewne dziedziczenie nam się nie sprawdziło. :)
Zastosowanie dekoratora zapewnia nam sporą swobodę w kwestii tego kiedy i w co chcemy dany komponent udekorować. Istnieje podejście które mówi nam o tym ze kompozycja jest lepsza od dziedziczenia właśnie z powodu elastyczności. Na pewno napisze o tym jeszcze więcej. Ponieważ jest to moim zdaniem bardzo dobre podejście w programowaniu obiektowym.

Wracając do naszego dekoratora, jego zastosowanie umożliwia nam dodanie zadań do takich obiektów których definicja klasy nie pozwala na tworzenie podklas, wymagane jest dynamiczne modyfikowanie takich obiektów, czy też wszędzie tam gdzie tworzenie podklas jest po prostu nie praktyczne.

Dekorator pozwala utrzymać SOLIDny kod:


(S) Zasada jednej odpowiedzialności - Nowa funkcjonalność nie ląduje w pierwotnym komponencie, tylko zostaje dodana do osobnego bytu (dekoratora).

(O) Zasada otwarte/zamknięte - Rozbudowa przy użyciu dekoratora nie wymaga zmian w komponencie, więc nie naruszamy reguły zamkniętego na modyfikacje.
Natomiast komponent pozostał otwarty na rozszerzenia ponieważ dekorator nadal udostępnia interfejs komponentu.

(L) Zasada podstawienia Liskov - Zachowujemy oryginalny interfejs dekorowanego obiektu, oraz po wykonaniu zadania danego dekoratora delegujemy program do metody dekorowanego obiektu, przez co zachowujemy oryginalną intencje programu.

Komentarze

Popularne posty z tego bloga

Jeden prosty krok do SOLIDnego kodu - Klasy final w PHP

Najważniejsza książka programisty - Mistrz Czystego Kodu