StartWzorce projektoweDekorator (decorator)
Baza Wiedzy
Wersja offline serwisu przeznaczona na urządzenia z systemem Android.

Darowizny
darowiznaWspomóż rozwój serwisu


Nagłówki RSS
Kanał artykuły
Kanał implementacje
Kanał komentarze
Kanał forum


Bookmarki









Sonda
Implementacji w jakim języku programowania poszukujesz?
 
Dekorator (decorator)
Ocena użytkowników:++++- / 6
SłabyŚwietny 
Wpisany przez Kamil Dworak
sobota, 14 sierpnia 2010 20:09
Dekorator (ang. decorator) - wzorzec strukturalny, służy do ulepszania i rozbudowywania obiektów. Załóżmy, że chcemy dodać do jakiejś klasy metodę (niech jeszcze będzie to abstrakcja lub metoda wirtualna, a klasa ta będzie nadklasą dla innych klas). Dzięki dekoratorowi nie musimy tutaj nic modyfikować, możemy nadać obiektowi nowe zachowanie podczas działania programu. Dodatkowo wzorzec ten zapobiega przed eksplozją klas, spowodowaną dużą liczbą rozszerzeń danej klasy (np. kombinacji rożnych składników na pizzy może być mnóstwo!).
Dekorator musi mieć taki sam interfejs jak obiekt, który będziemy dekorować (obiekty dekorujące są tego samego typu co obiekty dekorowane). Do dekoratora przekazujemy dekorowany obiekt. W przeciwieństwie do dziedziczenia, obiekty dostają nowe funkcjonalności dynamicznie ( w trakcie działania programu), a nie na etapie kompilacji. Klient wcale nie musi wiedzieć o działaniu wzorca.
Schemat poniżej ukazuje zastosowanie wzorca:

dekorator



  • Tworzymy dwa obiekty: Mercedes i Fiat.
  • Sprawdzamy ich opis oraz wartość.
  • Rozszerzamy je o klimatyzację, nadpisujemy obiekty o nowe, wywołując konstruktor klasy Klimatyzacja. Do klasy tej przekazaliśmy obiekt, który będziemy dekorować. Teraz przeciążona metoda about wywołuje w sobie oryginalną metodę oraz dodaje do niej informację, o co samochód został wzbogacony.
  • Teraz należy zwiększyć cenę takiego wariantu, pobieramy cenę "czystego" samochodu i dodajemy do niej koszty klimatyzacji.
  • Nasze obiekty s1 i s2 zostały wzbogacone.
  • Adekwatnie postępujemy z dodatkowymi oponami.
  • Na koniec widzimy utworzenie obiektu s3, który już od początku jest udekorowany.




Autor Język programowania Komentarz Otwórz Pobierz Ocena
Kamil Dworak C# Visual Studio 2008
Implementacja w C#
Implementacja w C#
++++- / 3
Kamil Dworak C/C++ Visual Studio 2008
Implementacja w C/C++
Implementacja w C/C++
++++- / 1
Kamil Dworak Java
Implementacja w Java
Implementacja w Java
++++- / 2
 
Dodaj własną implementację tego algorytmu
  • Zaloguj się na stronie
Plik:
Język programowania:
Komentarz:
  By móc dodać implementacje zaloguj się na stronie



Poprawiony: sobota, 14 sierpnia 2010 20:18

Dodaj komentarz

Kod antysapmowy
Odśwież