Builder — RexDac Academy

RexDac AcademyNotas técnicas · Ayuda tener algunos conocimientos previos
0%Notas publicadas leídas · en este dispositivo

Principios y arquitectura / Patrones de diseño / Creacionales

Builder

Notas originales de SunDiaL · Ver fuente en inglés

El problema: Tienes un objeto que siempre se construye de la misma manera, pero con características opcionales. La solución (si el lenguaje lo permite): Un constructor con parámetros opcionales. La otra solución: Crear una clase Builder que sepa cómo construir el objeto.

Builder es la indirección aplicada al proceso de construcción.

Nota 1: Si importa el orden de los pasos, crear también una clase Director que utilice un constructor Builder. Básicamente, Builder se convierte en una Strategy para Director.

Nota 2: Puedes tener varias clases Builder que construyan lo mismo de distintas maneras.

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