Builder es un patrón de diseño creacional que nos permite construir objetos complejos
paso a paso. El patrón nos permite producir distintos tipos y representaciones de un
objeto empleando el mismo código de construcción.
Como implementarlo
1. Asegúrate de poder definir claramente los pasos comunes de construcción para
todas las representaciones disponibles del producto. De lo contrario, no podrás
proceder a implementar el patrón.
2. Declara estos pasos en la interfaz constructora base.
3. Crea una clase constructora concreta para cada una de las representaciones de
producto e implementa sus pasos de construcción.
No olvides implementar un método para extraer el resultado de la construcción. La
razón por la que este método no se puede declarar dentro de la interfaz
constructora es que varios constructores pueden construir productos sin una
interfaz común. Por lo tanto, no sabemos cuál será el tipo de retorno para un
método como éste. No obstante, si trabajas con productos de una única jerarquía,
el método de extracción puede añadirse sin problemas a la interfaz base.
4. Piensa en crear una clase directora. Puede encapsular varias formas de construir
un producto utilizando el mismo objeto constructor.
5. El código cliente crea tanto el objeto constructor como el director. Antes de que
empiece la construcción, el cliente debe pasar un objeto constructor al director.
Normalmente, el cliente hace esto sólo una vez, mediante los parámetros del
constructor del director. El director utiliza el objeto constructor para el resto de la
construcción. Existe una manera alternativa, en la que el objeto constructor se
pasa directamente al método de construcción del director.
6. El resultado de la construcción tan solo se puede obtener directamente del director
si todos los productos siguen la misma interfaz. De lo contrario, el cliente deberá
extraer el resultado del constructor.