24 de enero de 2014

Este patrón es también conocido cómo Builder
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:
En la siguiente imagen podemos ver un diagrama UML de este patrón:
UML Builder
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.

Les dejo un ejemplo que descargar en C#: Builder_Pattern

Subscribe to RSS Feed Follow me on Twitter!