Builder

 
 
 
Clasificación Intención Otros nombres Motivación Aplicabilidad Estructura Participantes
Colaboraciones Consecuencias Implementación Código ejemplo Usos  Patrones Relacionados  Autores
 

Clasificación

Patrón de diseño
 

Intención

Separar la construcción de un objeto complejo de su representación de modo que el mismo proceso de construcción pueda crear diferentes representaciones.
 

Motivación

Los objetos que dependen de un algoritmo tendrán que cambiar cuando el algoritmo cambia. Por lo tanto los algoritmos que estén expuestos a dicho cambio deberían ser separados, permitiendo de esta manera reutilizar algoritmos para crear diferentes representaciones. 
 

Aplicabilidad

El patrón Builder se usa cuando: 
  • El algoritmo para creación de un objeto complejo debe ser independiente de las partes que conforman el objeto y cómo están ensambladas.
  • El proceso de construcción debe permitir diferentes representaciones del objeto que se construye.
 

Estructura

 

Participantes

Builder 
  • Especifica una interfaz abstracta para la creación de partes de un objeto Producto
ConcreteBuilder 
  • Construye y ensambla las partes del producto por implementación de la interfaz Builder.
  • Define y guarda la ruta de la representación que crea.
  • Provee una interfaz para recuperación del producto.
Director 
  • Construye un objeto usando la interfaz Builder
Product 
  • Representa el objeto complejo en construcción. El ConcreteBuilder construye la representación interna del producto y define el proceso con el cual se ensambla.
  • Incluye las clases que definen las partes componentes, incluyendo interfaces para ensamblar las partes dentro del resultado final.
 

Colaboraciones

  • El Cliente crea el objeto Director y lo configura con el objeto Builder deseado.
  • El Director notifica al constructor cuándo una parte del producto se debe construir.
  • El Builder maneja los requerimientos desde el director y agrega partes al producto.
  • El Cliente recupera el producto desde el constructor.

Consecuencias

  1. Permite variar la representación interna de un producto.
  2. Permite separar el código de la construcción y la representación.
  3. Da control refinado sobre el proceso de construcción.
 

Implementación

Este ejemplo trata de modelar el proceso de agregación de un objeto contenedor a la pantalla.
Este objeto contenedor puede ser un Panel Sencillo , o un GrouopBox (panel con nombre) , o un RadioGroupBox
(GroupBox con unos radio buttons).

Código ejemplo

Aquí se muestran las clases principales para el ejemplo mencionado.

Usos conocidos

Objetos Parser 
 

Patrones relacionados

  • Abstract Factory 
  • Composite
  • Strategy

Autores

Marta Lucia Anaya
Vladimir Bronnikov