Builder — RexDac Academy

RexDac AcademyNote tehnice · Ajută să ai câteva noțiuni de bază
0%Note publicate citite · pe acest dispozitiv

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;
	}
}