Skip to content

Latest commit

 

History

History
31 lines (19 loc) · 1.94 KB

File metadata and controls

31 lines (19 loc) · 1.94 KB

Builder

Definición del patrón

El patrón Builder separa la construcción de un objeto complejo de su representación, permitiendo que el mismo proceso de construcción pueda crear diferentes representaciones.

Problema que resuelve

A menudo, en el desarrollo de software, necesitamos crear objetos que tienen muchas partes o que requieren configuraciones complejas. Si intentamos hacerlo dentro de un constructor o utilizando métodos con muchos parámetros, el código puede volverse difícil de leer y mantener. El patrón Builder permite que el proceso de creación sea más manejable y legible al dividirlo en pasos más pequeños y más manejables.

Estructura

  1. Builder: Declara una interfaz abstracta para crear las partes de un objeto Producto.
  2. ConcreteBuilder: Implementa la interfaz Builder y construye partes específicas del producto. Mantiene la representación del producto ensamblado.
  3. Product: Representa el objeto complejo que está siendo construido.
  4. Director: Construye un objeto utilizando la interfaz Builder. La clase Director no es estrictamente necesaria, pero a menudo se utiliza para encapsular las construcciones específicas.

Ventajas

  • Separación del proceso de construcción: Facilita la construcción de objetos complejos paso a paso.
  • Código más limpio y legible: Reduce la complejidad de los constructores con muchos parámetros.
  • Flexibilidad: Permite crear diferentes representaciones de un producto utilizando el mismo proceso de construcción.

Desventajas

  • Complejidad adicional: Introduce más clases y puede hacer que el diseño sea más complejo.
  • Rendimiento: Puede ser menos eficiente si se crean muchos objetos temporales en el proceso de construcción.

Conclusiones

En resumen, el patrón Builder es una herramienta poderosa para crear objetos complejos de manera clara y manejable, proporcionando flexibilidad y control sobre el proceso de construcción.