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.
 


