Treci la conținutul principal

Ce este

Șablonul Builder construiește un obiect complex pas cu pas. În loc de un singur constructor cu o listă lungă și derutantă de argumente, constructorul pas cu pas oferă pași mici, cu nume — și un build() final care returnează obiectul finit.

Fiecare pas returnează chiar constructorul, așa că apelurile se înlănțuie într-o propoziție ușor de citit.


Exemplu: construirea unei pizza

Compară new PizzaBuilder("mare").cheese().topping("ciuperci") cu un constructor de forma new Pizza("mare", true, ["ciuperci"]) — constructorul pas cu pas spune ce înseamnă fiecare valoare, iar părțile opționale sunt pur și simplu omise.

Pași care se înlănțuie

Fiecare pas are un nume și este opțional: pizza mică îi omite pe toți și iese cu cheese: false și o listă goală de ingrediente. Fără supa de argumente true, undefined, false.

Prompt
Scrie un program TypeScript cu o clasă PizzaBuilder: constructorul primește dimensiunea, pașii pentru brânză și ingrediente returnează chiar constructorul pentru înlănțuire, iar build returnează obiectul Pizza finit (dimensiune, indicator pentru brânză, tablou de ingrediente). Construiește o pizza mare cu brânză și două ingrediente și o pizza mică simplă, apoi afișează o descriere pe un singur rând pentru fiecare.
Ieșire: program TypeScript și rezultatul capturat

Când să îl folosești

Folosește-l când un obiect are multe părți opționale sau când construirea are pași reali care merită nume. Cererile, interogările și configurațiile sunt teritoriu clasic pentru Builder.

Renunță la el pentru obiecte simple — un literal de obiect cu proprietăți numite, { size: "mare", cheese: true, toppings: [] }, este deja un mic constructor bun pentru cazurile ușoare.


Avantaje și dezavantaje

Avantaje: construire ușor de citit; părți opționale fără liste uriașe de argumente; obiectul poate fi validat o singură dată, în build().

Dezavantaje: o a doua clasă de scris și de întreținut; este exagerat acolo unde un literal de obiect se citește deja bine.