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