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

Implementación del Patrón Prototype en JavaScript

24/27
Recursos

¿Cómo implementar el patrón prototype en JavaScript?

El patrón prototype es fundamental en el desarrollo de aplicaciones, permitiendo clonar objetos de manera sencilla y eficiente. En JavaScript, este patrón es especialmente útil y se integra naturalmente con las características del lenguaje, dada su orientación hacia prototipos. Vamos a explorar cómo implementar este patrón paso a paso.

¿Qué necesitamos para comenzar?

Para empezar con la implementación del patrón prototype, es esencial tener en cuenta los siguientes elementos:

  1. Definición de una clase base o interfaz: Esto implica crear un prototipo que contenga los métodos de clonación necesarios.
  2. Creación de productos concretos: Estos son los que heredarán o implementarán desde la clase base.

Código base: Clase Car

Primero, definimos una clase base, Car, que servirá como plantilla:

class Car {
  constructor(model, airbags, color) {
    this.model = model;
    this.airbags = airbags;
    this.color = color;
  }

  clone() {
    throw new Error("Este método debe ser sobreescrito");
  }
}

Esta clase Car actúa como el prototipo del que se derivarán otros objetos.

¿Cómo crear productos concretos?

A partir de la clase Car, podemos crear una nueva clase que herede de ella:

class MastodonCar extends Car {
  constructor(carToClone) {
    super(carToClone.model, carToClone.airbags, carToClone.color);
  }

  clone() {
    return new MastodonCar(this);
  }
}

En este caso, MastodonCar sobrescribe el método clone para permitir la clonación de instancias.

¿Cómo realizamos la clonación de instancias?

Supongamos que hemos construido una instancia de MastodonCar:

let mastodonCar = new MastodonCar(new Car("sedan", 4, "rojo"));
let mastodonCarClone = mastodonCar.clone();
console.log(mastodonCarClone);

Esto resultará en un objeto diferente, mastodonCarClone, pero con la misma configuración que mastodonCar.

¿Qué demuestra la ejecución de nuestra implementación?

Cuando ejecutamos el script, observaremos en la consola:

  • El primer console.log muestra los detalles del mastodonCar.
  • El segundo console.log indica un objeto nuevo pero con idéntica configuración que el objeto original.

Esto ilustra cómo el patrón prototype en JavaScript facilita la creación de objetos duplicados con mínima intervención.

Algunas reflexiones sobre prototypes en JavaScript

JavaScript, con su herencia basada en prototipos, aplica conceptos de clonación de manera inherente. Antes de las clases en JavaScript, los prototipos eran esenciales para la programación orientada a objetos (POO) y el diseño de objetos reutilizables y extensibles.

A medida que exploras más sobre el patrón prototype en JavaScript, considera cómo estas técnicas pueden mejorar la eficiencia y organizacionalidad de tu código. Además, recuerda que JavaScript dispone de herramientas nativas para realizar clonaciones, como Object.assign() y el operador spread (...).

Esta integración del patrón de diseño prototype y la naturaleza de JavaScript son una combinación poderosa para cualquier desarrollador en el ecosistema JavaScript. ¿Qué opinas tú? ¿Cuál ha sido tu experiencia implementando patrones de diseño?

Aportes 3

Preguntas 3

Ordenar por:

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

¡Hola!
Si se te hace un poco raro la mención que hace Dani de JavaScript y su enfoque a prototipos, te recomiendo el curso de POO en Javascript por Juan David Castro, considero que JuanDC explica muy bien el porqué Javascript es un lenguaje basado en prototipos.

Cada vez entiendo más javascript, sobre todo el uso de objetos, nunca le pongo tanta atención a la usabilidad de estos, siendo que los veo a diario.
Bueno, el ejemplo parece muy sencillo, ¿no? ¿Cuál sería un caso de uso más complejo? Como decir, por qué Brendan Eich decidió basar JavaScript en el patrón Prototype? Puede ser una pregunta compleja, pero puede ser excelente para la clase