Está en la página 1de 8

Patrones de Diseño

Builder

Gonzalo Pérez Correa


Microsoft MVP ASP/ASP.NET
www.chalalo.cl
Patrón de Diseño Builder
 Fuentes de información:
 Wikipedia – Patron de diseño Builder
 Modificación de ejemplo:

◦ http://enemasuno.blogspot.com/2007/11/builder-
patrn-de-diseo.html
Patrón de Diseño Builder
Como Patrón de diseño, el patrón 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.
Patrón de Diseño Builder
Intención
Abstrae el proceso de creación de un objeto complejo, centralizando dicho proceso en
un único punto, de tal forma que el mismo proceso de construcción pueda crear
representaciones diferentes.

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.
Patrón de Diseño Builder
Builder
Interfaz abstracta para crear productos.
Concrete Builder
Implementación del Builder
Construye y reúne las partes necesarias para construir los
productos
Director
Construye un objeto usando el patrón Builder
Producto
El objeto complejo bajo construcción
Patrón de Diseño Builder
Ejemplo
Tenemos una tienda de armado y desarmado de Computadoras, sin analizar mucho,
hemos creado distintas clases que representan las líneas de PC, que se clasifican según
su potencia:
 Básica

 Gamer

Si bien los dos tipos de PC tienen el mismo tipo de piezas, no son de las mismas
características,(por ejemplo, no es la misma tarjeta de video) por lo que eventualmente
proceso de armado(fabricación) puede variar, por lo que hicimos dos clases que se
encargan de “ensamblar el PC”
Patrón de Diseño Builder
Se hace ineficiente por, entre otras cosas por:
 Tengo que crear un Creador (ArmarPC) por cada PC que incluyo en mi modelo

 Tengo los “Armadores” con métodos similares entre si, pero no aprovecho la poo.

Es mucho mejor tener un centralizando dicho proceso en un único punto, de tal


forma que el mismo proceso de construcción pueda crear representaciones
diferentes.
Patrón de Diseño Builder
Mucho mejor tener una clase
Abstracta PCBuilder que permita
que en sus clases derivadas se
implemente el comportamiento
específico para cada opción

Si creamos una nuevo tipo de PC


, no hay por que modificar la
clase Base (siempre que la
especificación sea la misma).

También podría gustarte