Treci la conținutul principal

Ce este

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

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


Exemplu: construirea unei pizze

Comparați PizzaBuilder("large").cheese().topping("mushrooms") cu un apel de constructor precum Pizza("large", True, ["mushrooms"]) — constructorul 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. Fără o grămadă de argumente True, None, False.

Prompt
Scrie un program Python cu un PizzaBuilder: acesta primește mărimea, pașii cheese și topping returnează constructorul pentru înlănțuire, iar build returnează clasa de date Pizza terminată. Construiește o pizza mare cu brânză și două ingrediente și o pizza mică simplă, afișându-le pe amândouă.
Ieșire: program Python complet

Când să îl folosiți

Folosiți-l când un obiect are multe părți opționale sau când construirea are pași reali care merită un nume. Cererile, interogările și configurațiile sunt teritoriul clasic al constructorului.

Renunțați la el pentru obiecte simple — un apel cu argumente cu nume, Pizza(size="large"), 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: încă o clasă de scris și de întreținut; exagerat acolo unde argumentele cu nume se citesc deja bine.