¿Ya te llegó aquel día en el que construir un objeto se convirtió en un largo inicializador con un tedioso proceso de escribir uno a uno todos lo parametros de entrada? A mi si.
Y la verdad que no quedaba ni bonito, ni elegante, ni me terminaba de gustar por más que diera saltos de línea en Objective C. En Swift ya ni os cuento.
Pero con cada problema llega un patrón.
Separar la construcción compleja de un objeto de su representación.
Pasar de:
var spiderman = SuperHero(name: "Spiderman", superPower: "Spider Powers", alterEgo: "Peter Parker")
a:
let details = SuperHeroBuilder { builder in
builder.name = "Spiderman"
builder.superPower = "Spider Powers"
builder.alterEgo = "Peter Parker"
}
var spiderman = SuperHero(builder: details)
Dentro del playground podréis ver la implementación de este pequeño ejemplo de una forma corta, elegante y fácil de entender. Separando el constructor de un súper héroe de su propia representación.