Builder

Warning: This post isn’t ready
I’m translating this:

Builder

Problema: A la hora de de hacer un nuevo objeto, la cantidad de parámetros es larguísima, indicando que hemos cometido un fallo en el diseño (un anti-patrón, que parece una solución pero no es buena). Aparte de que con muchas opciones, el diseño puede no ser lo suficientemente flexible (y la falta de flexibilidad se soluciona con clases abstractas y polimorfismo).

Solución: Este es el patrón de construcción para crear nuevos objetos más sencillo que hay en esta lista (el singleton no cuenta). Permite configurar más fácilmente la creación de estos objetos, sin tener que memorizar una lista larga de parámetros en los constructores. Es util al crear objetos a partir de XML o similares. La diferencia con las fábricas es que las fábricas crean familias de objetos, pero el builder crea objetos complejos.

Fundamento:


Tenemos una clase director, que se configura a base de cambiar las variables, y al final se le da a construir para que genere un objeto del tipo que sea. Vamos a verlo en el ejemplo.

Ejemplo:

Imaginate que tenemos una cadena de hamburguesas (antes pizzas, ahora hamburguesas) y que queremos crear una pizza según lo que nos diga el cliente. Una opción sería hacer algo como:

public Menu pedirMenu(Hamburguesa burger, Refresco ref, Postre pos, Regalo reg);

Puede que tu tengas una memoria maginifica y sepas bien como va esto pero si se lo pasas a otro programador puede tener problemas. Así que para prevenir problemas y para tener las ventajas que ofrece esto (como que si cambia el menú no se cambia el resto del programa [en principio]), vamos a hacer el siguiente diseño:

Leave a Reply