Implementación del Patrón Builder en Producción de Coches
Clase 19 de 27 • Curso de Patrones de Diseño en JavaScript
Contenido del curso
Singleton
Factory
- 7

Patrones de Diseño: Introducción al Patrón Factory
08:29 min - 8

Patrón Factory: Implementación y Detalles Esenciales
06:47 min - 9

Implementación del Patrón Factory Method en JavaScript
16:04 min - 10

Comparación del Patrón Factory en JavaScript y TypeScript
04:46 min - 11

Patrón Factory: Ventajas y Desventajas en Desarrollo de Software
10:24 min
Abstract Factory
- 12

Patrón Abstract Factory: Estrategia para Múltiples Fábricas de Coches
03:39 min - 13

Patrones de Diseño: Abstract Factory en Producción de Coches
04:21 min - 14

Implementación del patrón Abstract Factory en JavaScript
10:46 min - 15

Diferencias entre JavaScript y TypeScript en el patrón Abstract Factory
03:33 min - 16

Patrón Abstract Factory: Ventajas y Desventajas
06:00 min
Builder
- 17

Patrón Builder: Diseño y Aplicación en Producción de Vehículos
07:40 min - 18

Patrón Builder: Análisis de Diagrama y Clases Relacionadas
04:46 min - 19

Implementación del Patrón Builder en Producción de Coches
Viendo ahora - 20

Comparación del Patrón Builder en JavaScript vs TypeScript
03:38 min - 21

Patrón Builder: Ventajas, Desventajas y Aplicaciones Prácticas
07:00 min
Prototype
- 22

Patrón Prototype: Clonación de Objetos en Diseño de Software
03:36 min - 23

Patrón Prototype en JavaScript y TypeScript
01:56 min - 24

Implementación del Patrón Prototype en JavaScript
07:14 min - 25

Comparación de Prototype en JavaScript y TypeScript
06:08 min - 26

Patrón Prototype: Ventajas y Desafíos en Diseño de Software
05:44 min
Conclusiones
¿Qué es el patrón Builder y cómo se aplica a la producción de coches?
El patrón Builder es una de las técnicas más efectivas para manejar construcciones complejas en programación. En este contexto, implementamos el patrón Builder en la línea de producción de coches. Su objetivo principal es simplificar el proceso de creación de objetos complejos mediante la separación del proceso de creación en pasos pequeños y manejables. Aquí encontrarás los detalles de cómo se implementa este patrón en la producción de vehículos, utilizando específicamente JavaScript.
¿Cómo se define la clase base o interfaz Builder?
El primer paso para implementar el patrón Builder es definir una clase base o una interfaz que estipule los pasos generales para construir productos específicos. Para el contexto de producción de coches, definimos la clase CarProductionLine con métodos esenciales como la configuración de las bolsas de aire, el color y la edición del automóvil. Aquí un ejemplo de código:
class CarProductionLine {
setAirbags(howMany) {
throw new Error('Método no implementado');
}
setColor(color) {
throw new Error('Método no implementado');
}
setEdition(edition) {
throw new Error('Método no implementado');
}
resetProductionLine() {
throw new Error('Método no implementado');
}
}
Cada método en nuestra clase base arroja un error si no se implementa, asegurando que todas las clases constructoras deben definir estos métodos.
¿Cómo implementamos los builders concretos?
El segundo paso es implementar builders concretos para ofrecer diferentes implementaciones de los pasos definidos en la clase base. Por ejemplo, en la fábrica de sedanes creamos la clase SedanProductionLine que proporciona implementaciones concretas para el proceso de producción:
class SedanProductionLine extends CarProductionLine {
setAirbags(howMany) {
this.sedanCar.airbags = howMany;
return this;
}
setColor(color) {
this.sedanCar.color = color;
return this;
}
setEdition(edition) {
this.sedanCar.edition = edition;
return this;
}
resetProductionLine() {
const model = this.internalModel;
this.sedanCar = model === 'Mastodon' ? new Mastodon() : new Rhino();
}
}
Gracias al uso de this, podemos encadenar métodos de manera elegante y eficiente, facilitando la personalización del vehículo.
¿Cuál es la finalidad de la clase director y cómo se usa?
La clase director tiene la responsabilidad de conocer y definir el proceso exacto para construir las variaciones del producto. Así, se establece un orden en los pasos de construcción. Aquí se muestra cómo configuramos un director para gestionar la construcción de diferentes ediciones de coches:
class Director {
setBuilder(builder) {
this.productionLine = builder;
}
constructCVTEdition() {
this.productionLine.setAirbags(4).setColor('Azul').setEdition('CVT');
}
constructSignatureEdition() {
this.productionLine.setAirbags(8).setColor('Rojo').setEdition('Signature');
}
}
El director garantiza que se sigan los pasos en un orden particular y permite la reutilización del mismo builder para diferentes configuraciones de productos.
¿Cómo se gestiona la creación de productos finales?
Impulsado por el director, el builder es capaz de ensamblar el producto y entregarlo ya configurado, manteniendo el estado del proceso y asegurando que el producto esté listo para ser utilizado:
const director = new Director();
const mastodonProductionLine = new SedanProductionLine('Mastodon');
director.setBuilder(mastodonProductionLine);
director.constructCVTEdition();
const mastodonCar = mastodonProductionLine.build();
console.log(mastodonCar);
El método build retorna el coche resultado de la configuración asignada, mostrando cómo los diversos métodos de construcción afectan al producto final.
¿Qué aporta el patrón Builder al desarrollo de software?
Implementar el patrón Builder no solo organiza el código sino que permite manejar de manera flexible la creación de objetos complejos, reduciendo el riesgo de errores y ofreciendo un código más mantenible. Mediante la separación de las acciones de construcción en varias clases, incluyendo los builders y el director, las responsabilidades están claramente definidas y desacopladas. Además, esta estructura es especialmente valiosa cuando se espera que los productos entren y salgan del proceso de producción de diferentes maneras en función de ciertos parámetros.
¡Ahora es tu turno de aplicar el patrón Builder y ver cómo se adapta a tus necesidades de desarrollo! Recuerda, la práctica es clave para dominar cualquier metodología de programación. ¡Sigue adelante y sigue construyendo!