Zpo-7-wyk-Slajd3: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 1: | Linia 1: | ||
== | ==Decorator: struktura== | ||
[[Image:zpo-7-wyk-Slajd3.PNG| | [[Image:zpo-7-wyk-Slajd3.PNG|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. | |||
[[zpo-7-wyk-Slajd2 | << Poprzedni slajd]] | [[zpo-7-wyk-toc|Spis treści ]] | [[zpo-7-wyk-Slajd4 | Następny slajd >>]] | [[zpo-7-wyk-Slajd2 | << Poprzedni slajd]] | [[zpo-7-wyk-toc|Spis treści ]] | [[zpo-7-wyk-Slajd4 | Następny slajd >>]] |
Aktualna wersja na dzień 19:16, 4 lis 2006
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.