Implementación del patrón Abstract Factory en JavaScript
Clase 14 de 27 • Curso de Patrones de Diseño en JavaScript
Contenido del curso
- 7

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

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

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

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

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

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

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

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

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

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

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

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

Implementación del Patrón Builder en Producción de Coches
27:39 - 20

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

Patrón Builder: Ventajas, Desventajas y Aplicaciones Prácticas
07:00
¿Cómo implementar el patrón AbstractFactory en JavaScript?
El patrón AbstractFactory es una robusta herramienta para la creación de familias de objetos relacionados. En este artículo, presentamos la implementación práctica de este patrón orientado a objetos en JavaScript, destacando su poder para disminuir el acoplamiento entre el código cliente y las instancias de los productos.
¿Cómo definir las clases base de los productos?
Para arrancar con el AbstractFactory, es fundamental definir las clases o interfaces de los productos base. En este caso, definimos dos productos: Mastodon y Rhino. Cada producto implementa un método useGPS, lo que garantiza que las implementaciones futuras deban realizar este método.
class MastodonCard {
useGPS() {
throw new Error("method not implemented");
}
}
class RhinoCard {
useGPS() {
throw new Error("method not implemented");
}
}
¿Cómo creamos las clases concretas de los productos?
El siguiente paso es establecer las clases concretas de los productos, que heredan de las clases base. Aquí creamos dos familias de vehículos: Sedan y Hatchback. Cada familia tiene su correspondiente implementación para Mastodon y Rhino.
class MastodonSedanCard extends MastodonCard {
useGPS() {
console.log("Sedan Mastodon GPS");
}
}
class RhinoSedanCard extends RhinoCard {
useGPS() {
console.log("Sedan Rhino GPS");
}
}
// Implementaciones similares para Hatchback
¿Qué es el abstract factory?
Posteriormente, se define el abstract factory, que establece un contrato para la creación de nuestras instancias de producto.
class AbstractFactory {
createMastodon() {
throw new Error("method not implemented");
}
createRhino() {
throw new Error("method not implemented");
}
}
¿Cómo implementar las fábricas concretas?
La clave del patrón está en las fábricas concretas que heredan del abstract factory. Definen las específicas versiones de los productos dentro de una familia.
class SedanCarFactory extends AbstractFactory {
createMastodon() {
return new MastodonSedanCard();
}
createRhino() {
return new RhinoSedanCard();
}
}
// Implementación similar para Hatchback
¿Cómo utilizar el patrón abstract factory?
Al emplear el patrón AbstractFactory, se inyecta la fábrica deseada, permitiendo crear objetos sin conocer su precisa clase. En el siguiente ejemplo utilizamos la fábrica Sedan y la Hatchback, y llamamos al método useGPS() de modo genérico.
function appCarFactory(factory) {
const mastodon = factory.createMastodon();
const rhino = factory.createRhino();
mastodon.useGPS();
rhino.useGPS();
}
const sedanFactory = new SedanCarFactory();
appCarFactory(sedanFactory);
const hatchbackFactory = new HatchbackCarFactory();
appCarFactory(hatchbackFactory);
¿Qué podemos concluir sobre la implementación en JavaScript?
Esta implementación del patrón AbstractFactory demuestra cómo se pueden crear distintos tipos de objetos relacionados sin comprometer el código cliente con clases específicas. Este patrón facilita que el diseño del software sea flexible, manejable y extensible.
Comparación con TypeScript y otras consideraciones
En proyectos complejos, utilizar TypeScript puede ofrecer ventajas adicionales, como la verificación temprana de tipos que ayudan a detectar errores. Continuaremos explorando las particularidades y beneficios de implementar este patrón en TypeScript en futuras entregas.
Esta metodología no sólo ilustra un claro entendimiento de los patrones de diseño, sino que también se erige como una herramienta esencial en el arsenal de cualquier desarrollador. Te animo a que implementes este patrón en tus propios proyectos y descubras por ti mismo sus beneficios. ¡Continúa aprendiendo y mejorando tus habilidades!