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