Budowniczy (builder)

Transkrypt

Budowniczy (builder)
Budowniczy (builder)
wzorzec ten stosowany jest do konstruowania
obiektów poprzez wcześniejsze stworzenie jego
fragmentów. Składamy od szczegółu do ogółu
(np. budowanie domu). Obiekty mogą być
rozmaitych postaci, a wszystko opiera się na
jednym procesie konstrukcyjnym. W konkretnych
budowniczych decydujemy o tym, jak dany obiekt
jest tworzony. Na koniec wywołujemy wszystkie
metody poszczególnych budowniczych
i otrzymujemy obiekt końcowy. Wzorzec ten
często występuje z wzorcami fabryki oraz
kompozytu.
Schemat wzorca
Budowa przykładowego wzorca
Opis budowy
• klient używający wzorca konstruuje obiekt
budowniczego,
• klient konstruuje nadzorcę, przekazując
mu referencję do obiektu budowniczego,
z którego ma korzystać,
• klient zleca skonstruowanie produktu,
• nadzorca zleca budowniczemu wykonanie
w odpowiedniej kolejności wszystkich czynności
niezbędnych do stworzenia produktu,
• klient pobiera gotowy produkt od budowniczego.
Diagram sekwencji wzorca budowniczy
Zastosowanie wzorca
Wzorzec budowniczego stosowany jest do
oddzielenia sposobu tworzenia obiektów od tego
jak te obiekty mają wyglądać. Przykładem jest
oprogramowanie
konwertujące
tekst
z jednego formatu na drugi. Algorytm odczytujący
i interpretujący dane wejściowe jest oddzielony od
algorytmu tworzącego dane wyjściowe. Dzięki
takiemu rozwiązaniu możliwe jest zastosowanie
jednego obiektu odczytującego dane wejściowe
oraz wielu obiektów konwertujących odczytane
dane do różnych formatów (ASCII, HTML, RTF, itp.),
co zwiększa uniwersalność rozwiązania.
Konsekwencje stosowania
Zaletami stosowania wzorca są: duża możliwość
zróżnicowania wewnętrznych struktur klas, większa
możliwość kontrolowania tego, w jaki sposób tworzony
jest obiekt (proces konstrukcyjny jest niezależny od
elementów, z których składa się tworzony obiekt) oraz
duża skalowalność (dodawanie nowych reprezentacji
obiektów jest uproszczone). Stosowanie wzorca
zapobiega także tworzeniu zduplikowanego kodu
odpowiedzialnego za tworzenie obiektów, gdyż proces
tworzenia konkretnych elementów obiektów zamknięty
jest w poszczególnych procedurach. Wady to duża
liczba obiektów reprezentujących konkretne produkty.
Zalety i wady
Zalety
• Duża możliwość zróżnicowania wewnętrznych struktur klas.
• Duża skalowalność (dodawanie nowych reprezentacji obiektów jest
uproszczone).
• Większa możliwość kontrolowania tego, w jaki sposób tworzony jest obiekt
(proces konstrukcyjny jest niezależny od elementów, z których składa się
tworzony obiekt.
Wady
• Duża liczba obiektów reprezentujących konkretne produkty.
• Nieumiejętne używanie wzorca może spowodować nieczytelność kodu
(jeden produkt może być tworzony przez zbyt wielu budowniczych).
THANKS FOR YOUR ATTENTION
ŹRÓDŁA:
https://pl.wikipedia.org/wiki/Budowniczy_(wzorzec_proj
ektowy)#/media/File:Builder_sequence_pl.svg
http://www.algorytm.org/wzorceprojektowe/budowniczy-builder.html
https://brasil.cel.agh.edu.pl/~09sbfraczek/budowniczy,1,
27.html
http://damianrudczyk.pl/wordpress/?p=105

Podobne dokumenty