Contenido del curso
Singleton
Factory
Abstract Factory
- 12

Qué es el patrón Abstract Factory
03:39 min - 13

Patrones de Diseño: Abstract Factory en Producción de Coches
04:20 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 para crear objetos complejos
07:39 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
27:39 min - 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

Diagrama UML del patrón Prototype explicado
Viendo ahora - 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:43 min
Conclusiones
Diagrama UML del patrón Prototype explicado
Resumen
El patrón Prototype propone una idea simple: clonar objetos en lugar de construirlos desde cero. Si trabajas con JavaScript o TypeScript y buscas entender cómo se estructura este patrón de diseño, su diagrama UML revela dos piezas clave que debes dominar antes de pasar al código.
¿Qué define la interfaz Prototype en el diagrama?
La interfaz prototype es el contrato que marca qué objetos pueden clonarse dentro de tu sistema.
En el diagrama, esta interfaz declara un método clone() cuyo tipo de retorno es el mismo prototype. Es decir, cualquier clase que la implemente promete devolver una copia de sí misma cuando alguien invoque ese método.
Un detalle interesante: el nombre de la interfaz no tiene que ser literalmente prototype. Puede llamarse Product, Document o lo que tenga sentido en tu dominio. Lo que importa es la intención, no la etiqueta.
¿Qué es un prototipo en programación orientada a objetos? Es cualquier objeto que expone un método de clonación, permitiendo crear copias suyas sin depender de su clase concreta ni de un constructor complejo.
¿Cómo se construyen los productos concretos que heredan del prototipo?
El segundo paso del diagrama es crear productos concretos que implementen la interfaz prototipo. Al hacerlo, garantizas que cada uno cuente con su propio método de clonación.
La lógica interna de ese clone() depende de cada objeto. Algunos copiarán propiedades simples, otros necesitarán manejar referencias profundas o estados complejos. El patrón no te obliga a una implementación específica, solo a cumplir el contrato.
Y aquí viene una pregunta natural: ¿todos tus objetos deben implementar este método? La respuesta es no. Aplicas Prototype solo cuando:
- Necesitas múltiples versiones o variaciones de un mismo producto.
- Quieres mantener configuraciones distintas sin duplicar código.
- Buscas evitar la creación de subclases para cada variante.
¿Cuándo conviene usar el patrón Prototype? Cuando priorizas configuración sobre herencia. Si crear subclases solo para tener variaciones se vuelve costoso, clonar un objeto base y ajustarlo resulta más limpio.
¿Por qué Prototype prioriza configuración sobre subclases?
Crear una subclase por cada variación lleva a jerarquías infladas. Con Prototype, partes de un objeto ya configurado y produces copias que ajustas según necesites. Tu árbol de clases se mantiene plano y tu código, más mantenible.
Esta es una regla de negocio que surge del diseño de la solución, no una imposición técnica. Tú decides, en función del problema, qué objetos merecen ser clonables.
¿Qué sigue después de entender el diagrama UML del Prototype?
Con la interfaz definida y los productos concretos implementándola, tienes la base estructural completa. El siguiente paso es traducir esto a código real, primero en JavaScript y luego comparar la misma solución en TypeScript para ver cómo cambia con tipado estático.
¿Ya identificaste en tu proyecto actual algún objeto que se beneficiaría de ser clonable? Cuéntame en los comentarios qué caso tienes en mente.