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

Patrones Creacionales en Diseño de Software

27/27
Recursos

Nombre del curso: Curso de Patrones de Diseño Creacionales en JavaScript

Dean: Sebastián Delmont

School Owner: Oscar Barajas

Profesor: Daniel Basulto

Dirección: Jeniffer Cruz y Juan David Castro

Producción OPS: Lizeth Cáceres y Rocío Martínez

Creación audiovisual: Candela Ocaranza

Edición de video: Diana Capote

Postproducción de audio: Santiago Guarín Suárez

Diseño gráfico: Romi Lavín y Amelia Amórtegui

Coordinación General: Andrés Arizmendy, Daniel Gutiérrez, Carol Baquero, Carlos Céspedes y Sura Cedeño

Revisión: Rodrigo Goitia y Belman Marin

Aportes 14

Preguntas 1

Ordenar por:

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

  • Dani: “Sé que el camino no ha sido sencillo”
  • Inmediatamente yo después de caer en cuenta que no estuvo nada fácil el curso:

Ya tenía rato que no tomaba un curso aquí en Platzi con tan buenos ejemplos y un excelente profesor.
PD: Todavia seguimos esperando los siguientes cursos de esta serie de Patrones de Diseño.

Más cursos como este porfavor, en donde se explica con código y ejemplos claros el uso de patrones de diseño.
Excelente curso, en espera de los próximos dos como recomendación me gustaria que explicara mas ejemplos, si esta bien centrarse en uno para mantener el foco en el código por que no muestras otros casos de uso o en los mismos retos en vez de ser retos relacionados con el ejemplo dado por que no que los retos sean random sean otras situaciones y con eso no pensamos en extender lo que se explico sino en como lo puedo aplicar a esta situación,

Esperando a los próximos cursos, espero sobre todo a los observer.

queremos más cursos de patrones jjj! Excelente curso

Excelente serie de cursos, me los recomendaron y fue un tip muy bueno.

A la espera de los siguientes cursos, y probablemente, le daré un repaso extra a estas clases para poder reafirmar mejor estos conocimientos.

Es una lástima que los otros cursos nunca vieron la luz
Aprendí muchísimo, lo único es que me gustaría otro curso práctico, este tuvo buenos ejemplos pero me gustaría profundizar con ejemplos que pudieramos usar y asi continuar mejorando. FABULOSO es el profesor Daniel
```js class baseCar{ showCosts(){ throw new Error('method not implemented'); } } class ElectricCar extends baseCar{ showCosts(){ console.log('Costos de un coche eléctrico 150,000 us'); } } class HybridCar extends baseCar{ showCosts(){ console.log('Costos de un coche híbrido 30,000 us'); } } class Car extends baseCar{ showCosts(){ console.log('Costos de un coche convencional 25,000 us'); } } class factoryCar { makeCar(){ throw new Error('method not implemented'); } } class ElectricCarFactory extends factoryCar{ makeCar(){ return new ElectricCar(); } } class HybridCarFactory extends factoryCar{ makeCar(){ return new HybridCar(); } } class SingleCarFactory extends factoryCar{ makeCar(){ return new Car(); } } function appCarFactory(factory){ const car = factory.makeCar(); car.showCosts(); //... otros métodos y propiedades del coche } //appFactory(new HybridCarFactory()); //appFactory(new ElectricCarFactory()); //appFactory(new SingleCarFactory()); function CreateFactory(type){ const factories = { Electric: ElectricCarFactory, Hybrid: HybridCarFactory, Default: SingleCarFactory }; const Factory = factories[type]; return new Factory(); } appCarFactory(CreateFactory('Electric')); appCarFactory(CreateFactory('Hybrid')); appCarFactory(CreateFactory('Default' ```class baseCar{    showCosts(){    throw new Error('method not implemented');    }} class ElectricCar extends baseCar{    showCosts(){        console.log('Costos de un coche eléctrico 150,000 us');    }} class HybridCar extends baseCar{    showCosts(){        console.log('Costos de un coche híbrido 30,000 us');    }} class Car extends baseCar{    showCosts(){        console.log('Costos de un coche convencional 25,000 us');    }} class factoryCar {    makeCar(){        throw new Error('method not implemented');    }} class ElectricCarFactory extends factoryCar{    makeCar(){        return new ElectricCar();    }} class HybridCarFactory extends factoryCar{    makeCar(){        return new HybridCar();    }} class SingleCarFactory extends factoryCar{    makeCar(){        return new Car();    }} function appCarFactory(factory){    const car = factory.makeCar();    car.showCosts();    //... otros métodos y propiedades del coche} //appFactory(new HybridCarFactory());//appFactory(new ElectricCarFactory());//appFactory(new SingleCarFactory()); function CreateFactory(type){    const factories = {        Electric: ElectricCarFactory,        Hybrid: HybridCarFactory,        Default: SingleCarFactory    };     const Factory = factories\[type];     return new Factory();} appCarFactory(CreateFactory('Electric'));appCarFactory(CreateFactory('Hybrid'));appCarFactory(CreateFactory('Default'
```js class singletons{ static instance = undefined; //Atributo estático para almacenar el valor, llamado para la validación de getInstance() constructor(version){ this.version = version; } static getInstance(version){ //Si no existe el atributo instance... if(!singletons.instance){ singletons.instance = new singletons(version); //...lo crea. } return singletons.instance; } } function appSingletons(){ /*Todas las variables tienen la misma referencia al mismo objeto. 1 sola instancia a lo largo de la aplicación:*/ const singleton1 = singletons.getInstance('singletons-v1'); const singleton2 = singletons.getInstance('singletons-v2'); const singleton3 = singletons.getInstance('singletons-v3'); console.log(singleton1 === singleton2); console.log(singleton1 === singleton3); } appSingletons(); ```class singletons{    static instance = undefined;    //Atributo estático para almacenar el valor, llamado para la validación de getInstance()     constructor(version){        this.version = version;    }     static getInstance(version){           //Si no existe el atributo instance...        if(!singletons.instance){            singletons.instance = new singletons(version); //...lo crea.         }        return singletons.instance;    }} function appSingletons(){      /\*Todas las variables tienen la misma referencia al mismo objeto. 1 sola instancia       a lo largo de la aplicación:\*/    const singleton1 = singletons.getInstance('singletons-v1');    const singleton2 = singletons.getInstance('singletons-v2');    const singleton3 = singletons.getInstance('singletons-v3');       console.log(singleton1 === singleton2);      console.log(singleton1 === singleton3);} appSingletons();
Bien el curso! Seria genial tambien en C# comparando con JAVA :-)
![](https://static.platzi.com/media/user_upload/image-19170e4a-8838-415c-a04e-8b33f53a88cf.jpg)

Excelente curso! 😄
Fueron temas muy interesantes y el contraste con TS ha sido increíble.
.
Espero con entusiasmo la continuación. Hasta una próxima ocasión 👋.