Skip to main content

Inicia sesión en CleanKata

Sigue tu progreso, gana XP y desbloquea todas las lecciones.

Al iniciar sesión aceptas nuestros Términos de uso y Política de privacidad.

Patrones de Diseño80 XP8 min

Prototype: Clonación de Objetos

Copia objetos existentes sin depender de sus clases — clona configuraciones complejas en lugar de reconstruirlas desde cero.

Por qué importa

Algunos objetos son costosos de construir — requieren consultas a la base de datos, cómputo intensivo o docenas de campos de configuración. Cuando necesitas un segundo objeto casi idéntico, reconstruirlo desde cero es ineficiente y propenso a errores. El patrón Prototype da a cada objeto un método clone() — copias el objeto costoso y solo sobreescribes lo que difiere, sin conocer la clase concreta del objeto.

Copia profunda vs copia superficial

El detalle crítico en Prototype es asegurarse de que el clon sea verdaderamente independiente. Una copia superficial comparte referencias a objetos anidados — mutar el clon muta el original. Siempre copia en profundidad las estructuras anidadas mutables. En Python, dataclasses.replace() es superficial pero seguro para dataclasses planas. En TypeScript, el operador spread es superficial — para objetos anidados, copia cada nivel explícitamente o usa structuredClone().

💡Conclusión clave

Si crear un objeto es costoso y necesitas variaciones de uno existente, clónalo — Prototype evita repetir la configuración costosa.

🔧 Algunos ejercicios pueden tener errores. Si algo parece incorrecto, usa el botón Feedback (abajo a la derecha) para reportarlo — nos ayuda a corregirlo rápido.

Pista: Si crear un objeto es costoso y necesitas variaciones de uno existente, clónalo — Prototype evita repetir la configuración costosa.

✗ Tu versión