algorytm.org

Budowniczy (builder)



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Budowniczy (builder)
Ocena użytkowników:***** / 51
SłabyŚwietny 
Wpisany przez Kamil Dworak, 04 sierpnia 2010 14:31

Budowniczy (ang. 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.

budowniczy



  • Director (szef) - zleca operacje odpowiedniemu budowniczemu (steruje budowaniem).
  • Builder (budowniczy) - ogólny interfejs tworzenia produktu.
  • ZestawABC996, ZestawXT001 (konkretny budowniczy) - tworzy odpowiednie składniki w oparciu o interfejs Builder.
  • ZestawKomputerowy - produkt końcowy


  • Ustawiamy w Directorze danego budowniczego.
  • Obiekt szef odpala metodę skladaj().
  • Przy pomocy budowniczego tworzymy nowy zestaw komputerowy (klasa abstrakcyjna Builder)
  • Kolejno budujemy podzespoły zestawu przy pomocy obiektu budowniczego w których, dzięki utworzonemu obiektowi z poprzedniego punktu, inicjujemy pola zestawu komputerowego. Punkt ten jest kluczowy dla Buildera, tu właśnie decydujemy, jak nasz obiekt jest tworzony
  • Director zwraca zestaw przy pomocy metody getZestaw().




Implementacje
AutorJęzyk
programowania
KomentarzOtwórzPobierzOcena
Kamil DworakC#Visual Studio 2008
.cs
.cs
***** / 9
Kamil DworakC/C++Visual Studio 2008
.cpp
.cpp
***** / 8
Kamil DworakJava
.java
.java
***** / 19
Piotr SynowiecPhp
.php
.php
***** / 0
 
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: 22 września 2010 20:19
Komentarze
photo
+28 # Arek 2010-10-21 16:04
Jeśli zostala zastosowana notacja UML, to w takim wypadku raczej "Director" agreguje "Builder". Romb na asocjacji powinien być przy klasie Director (Director--Builder)
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
0 # Dawid_T 2015-03-12 14:01
Tutaj w ogóle nie dojdzie do wycieku pamięci?
Tworzymy w budowniczym obiekt dynamicznie, i to jest spoko. Natomiast przekazujemy go przez wartość (return *this) więc zostanie on skopiowany do osób, które go wezmą. Następnie jak jest nowe zamówienie to nasz wskaźnik w budowniczym ma budować nowy obiekt, nie niszcząc w ogóle starego. Wydaje mi się, że wyciek pamięci gwarantowany, chyba, że coś pominąłem.
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz