Wzorce projektowe – Dekorator

Posted on Posted in Java SE, Polecane

Zapewnia dynamiczne dodawanie dodatkowej funkcjonalności do obiektu. Stanowi alternatywę dla rozwiązania w/w problemu przy pomocy dziedziczenia i rozszerzania funkcjonalności.

Przykładem stosowania wzorca decorator są klasy Reader i Writer z pakietu java.io

Przepis na implementację zgodną z GOF:

1)  Po pierwsze musimy mieć co dekorować a więc należy przygotować klasę zgodną z JavaBeans

 

2) Należy przygotować interfejs który będzie miał przynajmniej dwie metody, jedną związaną z logiką jak ma być wykonana oraz drugą zwracającą obiekt klasy z punktu 1

 

3)      Wróć do klasy z punktu 1 i zaimplementuj interfejs z pkt 2.

 

4)      Pora na dekorator – zacznij od stworzenia abstrakcyjnej kasy dekoratora w ramach której stwórz pole klasy z pkt1 , parametrowy konstruktor inicjalizujący to pole oraz implementacje metody z interfejsu zwracającej pole klasy z pkt1.

 

5) Konkretny dekorator tworzymy poprzez rozszerzenie dekoratora abstrakcyjnego w taki sposób by posiadał parametrowy konstruktor przyjmujący obiekt zgodny z interfejsem z pkt 2 co da nam niezależność od tego czy przekażemy tam obiekt klasy dekorowanej czy inny dekorator.  W ciele konstruktora należy wywołać prywatną metodę dekorującą czyli zmieniającą właściwości obiektu dekorowanego .

Należy zadbać o to by dekorator konkretny posiadał implementacje innych metod interfejsu lecz w tym przypadku mają one wywoływać odpowiednie metody na obiekcie dekorowanym

 

 

Wykorzystanie w aplikacji – dekorowanie obiektu :

lub

 

 

 

One thought on “Wzorce projektowe – Dekorator

  1. Witam.
    Gwoli ścisłości czy w klasie BusinessClassCompartmentDecorator metoda
    markAsFirstClass nie powinna się nazywać markAsBiznessClass?

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *