Skip to content

Commit 8a30b41

Browse files
authored
Merge pull request mouredev#5563 from eugeniasoria/reto23
#23 - Javascript
2 parents 49d8a90 + b350a4b commit 8a30b41

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
2+
/*
3+
* EJERCICIO:
4+
* Explora el patrón de diseño "singleton" y muestra cómo crearlo
5+
* con un ejemplo genérico.
6+
*/
7+
8+
9+
class SingletonExample {
10+
constructor(nombre) {
11+
this.nombre = nombre;
12+
if (SingletonExample._instance) {
13+
return SingletonExample._instance;
14+
}
15+
SingletonExample._instance = this;
16+
17+
}
18+
}
19+
20+
var instanceOne = new SingletonExample('instanceOne') // Se ejecuta exitosamente
21+
console.log("Nombre: instanceOne", instanceOne);
22+
23+
var instanceTwo = new SingletonExample('instanceTwo') // Arroja error
24+
console.log("Nombre instanceTwo", instanceTwo);
25+
26+
console.log("instanceOne === instanceTwo:" , instanceOne === instanceTwo);
27+
28+
29+
/* DIFICULTAD EXTRA (opcional):
30+
* Utiliza el patrón de diseño "singleton" para representar una clase que
31+
* haga referencia a la sesión de usuario de una aplicación ficticia.
32+
* La sesión debe permitir asignar un usuario (id, username, nombre y email),
33+
* recuperar los datos del usuario y borrar los datos de la sesión.
34+
*/
35+
36+
class SesionUsuario {
37+
constructor(id, username, name, email) {
38+
this.id = id;
39+
this.username = username;
40+
this.name = name;
41+
this.email = email;
42+
if (SesionUsuario._instance) {
43+
return SesionUsuario._instance;
44+
}
45+
SesionUsuario._instance = this;
46+
}
47+
48+
recuperarUsuario() {
49+
return `Id: ${this.Id} UserName: ${this.username} Name: ${this.name} email: ${this.email} `
50+
}
51+
52+
borrarSesion() {
53+
this.id = null;
54+
this.username = null;
55+
this.name = null;
56+
this.email = null;
57+
}
58+
59+
}
60+
61+
var miUsuario = new SesionUsuario(1, 'userX', 'Manolo', "[email protected]");
62+
console.log(">>Con datos: 1, userX, Manolo, [email protected]");
63+
console.log(miUsuario.recuperarUsuario());
64+
65+
var miOtroUsuario = new SesionUsuario(5, 'userB', 'Ramira', "[email protected]");
66+
console.log(">>Con datos: 5, userB, Ramira, [email protected]");
67+
console.log(miOtroUsuario.recuperarUsuario());
68+
69+
console.log("miUsuario === miOtroUsuario: ", miUsuario === miOtroUsuario);
70+
71+
miUsuario.borrarSesion();
72+
console.log(">>Luego de borrar usuario:");
73+
console.log(miUsuario.recuperarUsuario());
74+

0 commit comments

Comments
 (0)