poniedziałek, 11 marca 2013

Budowniczy



Budowniczy (Builder) jest kolejnym kreacyjnym wzorcem projektowym. Celem tego wzorca jest oddzielenie sposobu powoływania do życia obiektów od ich reprezentacji. Tworzenie obiektów jest procesem podzielonym na kilka etapów, które mogą być implementowane na wiele sposób. Wzorzec ten stosowany jest do konstruowania obiektów przez stworzenie jego fragmentów – od szczegółu do ogółu.  Sposób tworzenia obiektów implementują obiekty zwane konkretnymi budowniczymi. W celu otrzymania obiektu końcowego należy wywołać wszystkie metody poszczególnych budowniczych. Oddzielenie metody konstrukcji obiektów od ich reprezentacji umożliwia powstanie w jednym procesie konstrukcyjnym różnych reprezentacji. Budowniczy różni się od podobnych wzorców (np. Fabryki abstrakcyjnej) tym, że opiera się na sposobie tworzenia obiektów reprezentujących produkty. Przy każdym swoim wywołaniem Budowniczy buduje małą część produktu jednocześnie kontrolując stan wykonywanej pracy. Klient dostaje gotowy produkt po zakończeniu pracy Budowniczego – po złożeniu wszystkich części w całość.



Struktura

 

 

Uczestnicy

 

  • Budowniczy - odstarcza interfejs do tworzenia części składowych produktu; 

  • Konkretny Budowniczy – buduje i zestawia części produktu poprzez implementację interfejsu Budowniczego, definiuje i kontroluje tworzoną przez siebie reprezentację obiektu, zawarte w nim są procedury odpowiedzialne za konstrukcję i inicjalizację obiektu;
  • Nadzorca – zleca konstruowanie obiektu poprzez obiekt Budowniczego, dba o kolejność wykonywanych procedur konstrukcyjnych;
  • Produkt – reprezentuje konstruowany obiekt złożony;
  • Klient – odbiera całościowy produkt od nadzorcy.
     

Konsekwencje


Zalety:
  • duża możliwość zróżnicowania wewnętrznych struktur klas;
  • większa kontrola na procesem tworzenia obiektów;
  • duża skalowalność – uproszczone dodawanie nowych reprezentacji obiektów;
  • zapobieganie duplikowania kodu odpowiedzialnego za tworzenie obiektów.  
Wady:
  • duża liczba obiektów reprezentujących konkretne produkty.

Zastosowanie


Wzorzec wykorzystywany jest do konstrukcji obiektów złożonych, których konfiguracja i inicjalizacja jest procesem wieloetapowym. Ogólnie, stosowany jest wszędzie tam, gdzie jest potrzeba oddzielenia sposobu tworzenia obiektów od tego jak te obiekty mają wyglądać.
 

Przykład


Wzorzec Budowniczego może być zastosowany w przypadku, gdy chcemy wygenerować dokument danych w różnych formatach. Pobierany jest jeden strumień danych, a obiekty odpowiadające konkretnym budowniczym konstruują na ich podstawie dokumenty w formatach np. PDF, DOC, HTML.

Innym przykładem może być sposób tworzenia struktury zespołu projektowego złożonego z poszczególnych członków pełniących różne role w projekcie. Konkretni budowniczy odpowiadają za stworzenie obiektów odpowiadających konkretnym rolom w projekcie. Cały zespół projektowy jest zwracany do klienta w chwili, gdy utworzeni są wszyscy członkowie tego zespołu.

  


Brak komentarzy:

Prześlij komentarz