Logo David Burdelak
Słownik · Programowanie i wzorce projektowe

Co to jest wzorzec Builder?

Ostatnia aktualizacja:

Builder (Budowniczy) to wzorzec kreacyjny, który ułatwia konstruowanie skomplikowanych obiektów etapami. Zamiast konstruktora z wieloma parametrami używa się osobnego obiektu z metodami ustawiającymi kolejne cechy, a na końcu metody zwracającej gotowy wynik.

Przykład w PHP

$zapytanie = (new ZapytanieBuilder())
    ->tabela('artykuly')
    ->gdzie('status', 'opublikowany')
    ->sortuj('data', 'DESC')
    ->limit(10)
    ->zbuduj();

Łańcuch wywołań (fluent interface) czyni kod czytelnym, a kolejność ustawiania nie musi być z góry ustalona.

Po co Builder?

Rozwiązuje problem „teleskopowego konstruktora”, czyli klas z długą listą parametrów, z których wiele jest opcjonalnych. Pozwala też zbudować obiekt niezmienny, który po utworzeniu nie zmienia stanu, oraz zweryfikować jego spójność w momencie budowy.

Gdzie go spotkasz?

W budowniczych zapytań SQL w ORM-ach, konstruktorach żądań HTTP, generatorach formularzy i bibliotekach do tworzenia dokumentów. Dla obiektów z kilkoma polami wystarczy zwykły konstruktor.

Builder a inne wzorce kreacyjne

Fabryka decyduje, jaki obiekt utworzyć, a Builder, jak go skonstruować krok po kroku. Wzorce można łączyć: fabryka może zwrócić gotowego buildera. W nowoczesnych językach część potrzeb zaspokajają parametry nazwane i wartości domyślne, więc Builder bywa potrzebny dopiero przy naprawdę złożonym tworzeniu obiektów.

Ma to bezpośredni związek z praktykami, na których opiera się pisanie czytelnego i zrozumiałego kodu.

Zobacz w praktyce

Powiązane pojęcia

Wszystkie hasła z kategorii Programowanie i wzorce projektowe