Builder (Constructor) es usado para permitir la creación de una variedad de objetos complejos desde un objeto fuente (Producto), el objeto fuente se compone de una variedad de partes que contribuyen individualmente a la creación de cada objeto complejo a través de un conjunto de llamadas a interfaces comunes de la clase Abstract Builder.
Características generales de este patrón:
Nombre:
Builder.
Proposito:
Separar la construcción de un objeto complejo de su representación de manera que el mismo proceso de construcción pueda crear diferentes representaciones.
Aplicabilidad:
Este patrón se utiliza generalmente cuando:
· El algoritmo para la creación de un objeto complejo debe ser independiente de las partes que componen el objeto y la forma en que está ensamblado.
· El proceso de construcción debe permitir representaciones diferentes del objeto construido.
Estructura:

Participantes:
· Director: Tiene una referencia a AbstractBuilder. Director llama los métodos Creacionales en su instancia constructor para las distintas partes y el constructor de la construcción.
· AbstractBuilder: La interfaz que define los métodos disponibles para crear las distintas partes del producto.
· ConcreteBuilder: Implementa la interfaz AbstractBuilder. ConcreteBuilder implementa todos los métodos necesarios para crear un verdadero product. La implementación de los métodos sabe cómo procesar la información de Director y construir las respectivas partes de un producto. El ConcreteBuilder también tiene un método getProduct o un método creacional para devolver la instancia Product.
· Product: Los objetos resultantes. Puede definir el producto, bien como una interfaz (preferible) o clase.
Implementación:
· Típicamente hay una clase abstracta Builder (o interfaz) que define una operación para crear cada componente.
· Las clases concretas sobrecargan esas operaciones.
· No hay clase abstracta para el producto debido a que éstos pueden variar mucho.
Colaboraciones:
· El cliente crea el objeto Director y lo configura con el constructor (builder deseado).
· El director le notifica al constructor cada vez que se debe construir una parte del producto.
· El constructor procesa solicitudes del director y agrega partes al producto.
· El cliente obtiene el producto del constructor.
Consecuencias:
· Permite variar la representación interna del producto.
v El objeto constructor provee al director con una interfaz para construir el producto.
· Permite aislar el código de construcción y representación.
· Permite un control fino del proceso de construcción.
v Los objetos son construidos paso por paso.
v Cuando el proceso termina el producto es retribuido.
Patrones relacionados:
· Abstract factory.
· Composite.
Etiquetas: Builder, Creational patterns, Patrones Creacionales