Skip to content

Commit

Permalink
Merge pull request mouredev#5563 from eugeniasoria/reto23
Browse files Browse the repository at this point in the history
#23 - Javascript
  • Loading branch information
Roswell468 authored Aug 16, 2024
2 parents 49d8a90 + b350a4b commit 8a30b41
Showing 1 changed file with 74 additions and 0 deletions.
74 changes: 74 additions & 0 deletions Roadmap/23 - SINGLETON/javascript/eugeniasoria.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@

/*
* EJERCICIO:
* Explora el patrón de diseño "singleton" y muestra cómo crearlo
* con un ejemplo genérico.
*/


class SingletonExample {
constructor(nombre) {
this.nombre = nombre;
if (SingletonExample._instance) {
return SingletonExample._instance;
}
SingletonExample._instance = this;

}
}

var instanceOne = new SingletonExample('instanceOne') // Se ejecuta exitosamente
console.log("Nombre: instanceOne", instanceOne);

var instanceTwo = new SingletonExample('instanceTwo') // Arroja error
console.log("Nombre instanceTwo", instanceTwo);

console.log("instanceOne === instanceTwo:" , instanceOne === instanceTwo);


/* DIFICULTAD EXTRA (opcional):
* Utiliza el patrón de diseño "singleton" para representar una clase que
* haga referencia a la sesión de usuario de una aplicación ficticia.
* La sesión debe permitir asignar un usuario (id, username, nombre y email),
* recuperar los datos del usuario y borrar los datos de la sesión.
*/

class SesionUsuario {
constructor(id, username, name, email) {
this.id = id;
this.username = username;
this.name = name;
this.email = email;
if (SesionUsuario._instance) {
return SesionUsuario._instance;
}
SesionUsuario._instance = this;
}

recuperarUsuario() {
return `Id: ${this.Id} UserName: ${this.username} Name: ${this.name} email: ${this.email} `
}

borrarSesion() {
this.id = null;
this.username = null;
this.name = null;
this.email = null;
}

}

var miUsuario = new SesionUsuario(1, 'userX', 'Manolo', "[email protected]");
console.log(">>Con datos: 1, userX, Manolo, [email protected]");
console.log(miUsuario.recuperarUsuario());

var miOtroUsuario = new SesionUsuario(5, 'userB', 'Ramira', "[email protected]");
console.log(">>Con datos: 5, userB, Ramira, [email protected]");
console.log(miOtroUsuario.recuperarUsuario());

console.log("miUsuario === miOtroUsuario: ", miUsuario === miOtroUsuario);

miUsuario.borrarSesion();
console.log(">>Luego de borrar usuario:");
console.log(miUsuario.recuperarUsuario());

0 comments on commit 8a30b41

Please sign in to comment.