Este patrón es también conocido cómo Builder
Estructura:
En la siguiente imagen podemos ver un diagrama UML de este patrón:
Participantes:
Colaboraciones:
Separa la construcción de un objeto complejo de su
representación, de modo que el mismo proceso de construcción permite crear diferentes
representaciones.
Estructura:
Builder pattern |
Participantes:
- Constructor o Builder (IBuilder): Especifica la interfaz para la creación de las partes de un Producto.
- Constructor concreto (Builder): Implementa la interface del constructor para construir y ensamblar las diferentes partes del producto. Además almacena el producto en construcción y proporciona una interfaz para recuperar el producto construido.
- Director: Construye un objeto utilizando la interfaz del constructor.
- Producto: Objeto concreto a construir.
Colaboraciones:
- El cliente crea el objeto director y lo configura con el constructor deseado.
- El director notifica al constructor la parte del producto que debe ser creada.
- El constructor añade partes al producto, de acuerdo con las peticiones del director.
- El cliente recupera el producto final del constructor.
Concecuencias:
- Permite variar la representación interna de un producto.
- Aísla el código de la construcción y la representación.
- Proporciona un control más detallado del proceso de construcción.
Implementación:
En el nivel más elemental, es posible implementar
un patrón Builder básico con una
única clase Builder que tenga un
método de creación y su producto. Para dotarlo de mayor flexibilidad, los
diseñadores suelen ampliar este patrón básico con una o más de las siguientes
opciones:- Crear un Builder abstracto. Puede tener un sistema más genérico que sea capaz de albergar muchos tipos distintos de constructores si define una clase abstracta o una interfaz que especifique los métodos de creación.
- Definir múltiples métodos de creación para el Builder. Algunos Builder definen varios métodos de creación (básicamente, sobrecargan su método de creación) para proporcionar distintas formas de inicializar el recursos construido.
- Crear delegados para la creación. Con esta variante, un objeto Director contiene el método de creación general del Producto y llama a una serie de métodos mas granulares en el objeto Builder. En este caso, el objeto Director actúa como gestor para el proceso de creación del Builder.
Patrones relacionados:
- Abstract Factory: El patrón Builder puede ser remplazado con el patrón Abstract Factory para la creación de objetos complejos. Si bien, el patrón Builder se centra en la construcción de objetos complejos paso a paso, el patrón Abstract Factory hace hincapié en familia de objetos.
- Composite: Muchas veces lo que construye el patrón Builder es un Composite.