Introduccion

1

Patrones de Diseño Creacionales en Software

2

Patrones Creacionales: Singleton, Factory, Abstract Factory, Builder, Prototype

Singleton

3

Patrón Singleton: Implementación y Uso en Programación Orientada a Objetos

4

Diagrama de Clases del Patrón Singleton en JavaScript

5

Diferencias entre JavaScript y TypeScript en patrones de diseño

6

Ventajas y desventajas del patrón Singleton en diseño de software

Factory

7

Patrones de Diseño: Introducción al Patrón Factory

8

Patrón Factory: Implementación y Detalles Esenciales

9

Implementación del Patrón Factory Method en JavaScript

10

Comparación del Patrón Factory en JavaScript y TypeScript

11

Patrón Factory: Ventajas y Desventajas en Desarrollo de Software

Abstract Factory

12

Patrón Abstract Factory: Estrategia para Múltiples Fábricas de Coches

13

Patrones de Diseño: Abstract Factory en Producción de Coches

14

Implementación del patrón Abstract Factory en JavaScript

15

Diferencias entre JavaScript y TypeScript en el patrón Abstract Factory

16

Patrón Abstract Factory: Ventajas y Desventajas

Builder

17

Patrón Builder: Diseño y Aplicación en Producción de Vehículos

18

Patrón Builder: Análisis de Diagrama y Clases Relacionadas

19

Implementación del Patrón Builder en Producción de Coches

20

Comparación del Patrón Builder en JavaScript vs TypeScript

21

Patrón Builder: Ventajas, Desventajas y Aplicaciones Prácticas

Prototype

22

Patrón Prototype: Clonación de Objetos en Diseño de Software

23

Patrón Prototype en JavaScript y TypeScript

24

Implementación del Patrón Prototype en JavaScript

25

Comparación de Prototype en JavaScript y TypeScript

26

Patrón Prototype: Ventajas y Desafíos en Diseño de Software

Conclusiones

27

Patrones Creacionales en Diseño de Software

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Patrón Builder: Análisis de Diagrama y Clases Relacionadas

18/27
Recursos

¿Cómo entender el diagrama del patrón Builder?

El patrón Builder es una herramienta poderosa en la programación orientada a objetos que facilita la construcción de objetos complejos. Este patrón permite separar la construcción de un objeto de su representación final, ofreciendo flexibilidad y reutilización de código. Cuando se enfrenta a la implementación de un patrón Builder, es crucial comprender la relación entre sus elementos.

¿Cómo inicia la construcción con Builder?

La base del patrón es una clase o interfaz Builder, la cual define los pasos esenciales para construir los productos. Esta estructura puede ser una interfaz en la que declaras métodos fundamentales que establecerán las propiedades del objeto que construyes. Es común que dicha interfaz contemple la declaración de métodos que devuelven el tipo Builder, lo que puede parecer peculiar al principio. Sin embargo, esta técnica permite implementar recursión, facilitando la construcción fluida de objetos complejos.

interface Builder {
    setPropiedadA(valor: TipoA): Builder;
    setPropiedadB(valor: TipoB): Builder;
}

¿Cómo se implementan los Builders concretos?

Los Builders concretos son subclases que heredan o implementan de la clase Builder. Cada una de estas subclases implementa los pasos específicos para la configuración de los productos. Aquí, la relación entre el Builder y el producto suele ser de composición, ya que el Builder concreto controla el ciclo de vida del producto. Esto significa que el proceso de construcción concluye con la devolución del producto final, no simplemente agregando al mismo.

Incluyendo métodos como reset y build, estos Builders concretos no sólo configuran sino que también permiten reutilizar y reiniciar el proceso de creación de forma eficiente.

class ConcreteBuilder implements Builder {
    private producto: Producto;

    constructor() {
        this.reset();
    }

    public reset(): void {
        this.producto = new Producto();
    }

    public setPropiedadA(valor: TipoA): Builder {
        this.producto.propiedadA = valor;
        return this;
    }

    public setPropiedadB(valor: TipoB): Builder {
        this.producto.propiedadB = valor;
        return this;
    }

    public build(): Producto {
        const resultado = this.producto;
        this.reset();
        return resultado;
    }
}

¿Qué papel juega la clase producto?

La clase Producto es el objetivo final de todo el proceso de construcción. Puede ser una clase concreta o una interfaz común que los Builders utilizan para dar vida a las configuraciones específicas de un producto. En muchos casos, la implementación de estos productos se define mediante el uso de estructuras que proporcionan características específicas necesarias para el contexto, como puede ser una tarjeta, vehículo o cualquier objeto configurado.

class Producto {
    public propiedadA?: TipoA;
    public propiedadB?: TipoB;
}

¿Cómo funciona la clase directora?

La clase Directora toma el control del proceso de construcción y determina el orden en el que se realizan los pasos. Al utilizar un Builder, es capaz de decidir cómo se deben encadenar las configuraciones específicas para obtener el resultado deseado. Dependiendo del contexto, diferentes Builders pueden producir diferentes representaciones de productos.

¿Cuáles son las posibilidades creativas con el patrón Builder?

Aunque los fundamentos teóricos del patrón Builder proporcionan un marco sólido, es importante recordar que siempre hay espacio para la creatividad. Puedes crear tus propios patrones basados en Builder o combinarlos con otros patrones para satisfacer las necesidades específicas de un proyecto. Estas variaciones personalizadas no solo le añaden valor al producto final, sino que también enriquecen las normas y prácticas dentro de un equipo de desarrollo.

El patrón Builder te ofrece flexibilidad y un alto grado de control al crear objetos complejos de manera estructurada y legible. Estudia sus posibilidades y anímate a innovar dentro de este marco. ¡El mundo del desarrollo está lleno de oportunidades para dejar volar tu creatividad!

Aportes 2

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

¡Hola!

Les dejo mi resumen de la clase por si les interesa:

**Pasos para implementar Builder**:
1.	Declarar una clase base o interfaz builder que defina los pasos generales para la construcción de estos productos, ¿Cuál será el paso número 1 y cuál será el paso número 2? Etc.
2.	Implementar builders concretos, subclases que hereden o implementen la clase builder y dentro de estas, dejar las implementaciones de los pasos de configuración. (Relación de composición con el producto A) Cuenta con los métodos reset y build
3.	Implementar las clases producto específicas, para el caso de la gráfica, el producto A o producto B, puede ser una interfaz en común como Car
4.	Para finalizar, se tiene la clase Director, que sabe cuál es el proceso para construir la variante, utilizando el Builder y define el orden en el cuál será llamado, esta clase se encarga de definir el proceso.

Show me the code! (no entendí a partir del paso 3)