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