Principii și arhitectură / Șabloane de proiectare / Creaționale
Builder
Note originale de SunDiaL · Vezi sursa în engleză
Problema: Ai un obiect care este construit întotdeauna în același mod, dar cu funcționalități opționale. Soluția (dacă limbajul permite): Un constructor cu parametri opționali. Cealaltă soluție: Creează o clasă Builder care știe cum să construiască obiectul.
Builder reprezintă indirecția aplicată procesului de construire.
Nota 1: Dacă ordinea pașilor contează, creează și o clasă Director care folosește un builder. Practic, Builder devine un Strategy pentru Director.
Nota 2: Poți avea mai multe clase builder care construiesc același lucru în moduri diferite.
public class House
{
public Fence Fence { get; set; }
}
public class HouseBuilder
{
private House house;
public HouseBuilder()
{
this.house = new House();
}
public void Reset()
{
this.house = new House();
}
public void WithFence()
{
house.Fence = new Fence();
}
public House Build()
{
var result = this.house;
this.Reset();
return result;
}
}