Budowniczy (ang. builder) jest to kreacyjny wzorzec projektowy, stosowany w projektowaniu oprogramowania, które wymaga konstruowania złożonych obiektów krok po kroku. Proces konstruowania może się zmieniać w zależności od rodzaju konstruowanego produktu. Wzorzec ten oddziela konstruowanie złożonego obiektu od jego reprezentacji, umożliwiając procesowi konstruowania tworzenie różnych reprezentacji.

Kiedy stosować?
- Konstrukcja złożonych obiektów
- Budowa obiektów krok po kroku
- Unikanie konstruktorów z wieloma parametrami
- Konfigurowalne tworzenie obiektów
- Wspólny interfejs dla wielu reprezentacji
Kiedy nie stosować?
- Prosta konstrukcja obiektu
- Gdy wydajność ma krytyczne znaczenie
Kroki implementacji wzorca projektowego Budowniczy
- Utwórz klasę produktu: Zdefiniuj obiekt (produkt), który zostanie zbudowany. Ta klasa zawiera wszystkie pola, które tworzą obiekt.
- Utwórz klasę Builder: Ta klasa będzie miała metody ustawiania różnych części produktu. Każda metoda zwraca samego buildera, aby umożliwić łańcuchowanie metod.
- Dodaj metodę kompilacji: W klasie konstruktora dodaj metodę o nazwie build()(lub podobnej), która składa produkt i zwraca obiekt końcowy.
- Użyj klasy dyrektora (opcjonalnie): W razie potrzeby możesz utworzyć klasę dyrektora, aby kontrolować proces budowania i decydować o kolejności konstruowania części.
- Klient używa konstruktora: Klient używa konstruktora, aby krok po kroku ustawić żądane części i wywołać metodę build() w celu uzyskania produktu końcowego.
Przebieg procesu budowania
- 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,
- dyrektor zleca budowniczemu wykonanie w odpowiedniej kolejności wszystkich czynności niezbędnych do stworzenia produktu,
- klient pobiera gotowy produkt od budowniczego.