Builder

El propósito de este patrón de diseño es separar el proceso de construcción/ensamblaje de un objeto complejo de los mecanismo de creación de sus componente concretos (representaciones) de manera tal que sea posible aplicar el proceso de construcción para crear representaciones diferentes.

La estructura del patrón es la siguiente:

diagrama_builder

Este patrón resulta muy útil cuando, por alguna razón, se tiene que construir un objeto gradualmente; es decir, parte por parte. La construcción de cada parte está encapsulada en la interfaz Builder y la lógica de construcción que determina el orden en el cual van agregando las partes está encapsulada en Director que es el encargado de dirigir el proceso de construcción ejecutad por el Builder y que además permite obtener el producto construido.

El siguiente diagrama de secuencia muestra con mayor claridad estas colaboraciones:

 secuencia-builder

Algunas de las ventajas resultantes de la aplicación de este patrón son:

  • El proceso de ensamblaje/creación está separado de los servicios de creación de las partes que constituyen el objeto a construir.
  • El mismo proceso puede dar origen a productos diferentes. Por ejemplo, cambiando de Builder, el mismo proceso de ensamblaje puede dar origen a una interfaz para una aplicación móvil o una interfaz web.

Finalmente, se asume que el objeto a construir es complejo en el sentido que se requiere construirlo de manera gradual, emplear este patrón para construir objetos simples (aquellos que pueden construirse en un paso) implicaría incrementar la complejidad del diseño de manera innecesaria y para esos casos sería más apropiado emplear una factoría.

Referencias

[1] Design Patterns: Elements of Reusable Object-Oriented Software

Leave a Reply