Zpo-7-wyk-Slajd3

Z Studia Informatyczne
Wersja z dnia 19:16, 4 lis 2006 autorstwa Bwalter (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Decorator: struktura

Decorator: struktura


Component jest wspólnym interfejsem dla wszystkich klas, które można dekorować. Implementują go zarówno klasa ConcreteComponent, która jest odpowiedzialna za podstawową funkcjonalność oferowaną klientowi, jak i dekoratory. Każdy dekorator posiada referencję (oznaczoną jako kompozycję, aby zaznaczyć obowiązkowość i siłę tej relacji) do innego obiektu Component, którym może być ponownie dekorator lub ConcreteComponent. Otrzymując żądanie wykonania określonej operacji, dekorator deleguje je do swojego „wewnętrznego” obiektu Component, a następnie wykonuje specyficzną dla siebie dodatkową funkcjonalność. Dzięki temu dodanie do obiektu nowej funkcjonalności polega na utworzeniu dekoratora i przekazaniu mu owego obiektu. W ten sposób dekorator staje się rzeczywistym odbiorcą komunikatów od klienta, a ConcreteComponent – jego podwykonawcą.

Kiedy każdy dekorator (klasy ConcreteDecoratorA i ConcreteDecorator B) dodaje do dekorowanego obiektu tylko jedną funkcję, wówczas dekorując obiekt wielokrotnie uzyskujemy efekt osiągnięcia żądanej sumarycznej funkcjonalności. Pod względem typu udekorowany obiekt nie różni się od obiektu nieudekorowanego (klient widzi go przez interfejs Component), dlatego zastosowanie tego wzorca nie wymaga istotnych zmian w kodzie klienta.


<< Poprzedni slajd | Spis treści | Następny slajd >>