Skip to content

Commit 2a7f88c

Browse files
authored
Merge pull request mouredev#4934 from rigo93acosta/main
#23 - Python
2 parents a78c629 + b12b3ae commit 2a7f88c

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
## 23 - SINGLETON
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+
* DIFICULTAD EXTRA (opcional):
8+
* Utiliza el patrón de diseño "singleton" para representar una clase que
9+
* haga referencia a la sesión de usuario de una aplicación ficticia.
10+
* La sesión debe permitir asignar un usuario (id, username, nombre y email),
11+
* recuperar los datos del usuario y borrar los datos de la sesión.
12+
*/
13+
'''
14+
## refactoring -- guru
15+
16+
## SINGLETON: unica instancia de una clase
17+
'''
18+
Ejercicio
19+
'''
20+
21+
22+
class Singleton:
23+
24+
_instance = None
25+
26+
def __new__(cls):
27+
# Estructura común para implementar Singleton
28+
if not cls._instance:
29+
cls._instance = super(Singleton, cls).__new__(cls)
30+
31+
return cls._instance
32+
33+
singleton_1 = Singleton()
34+
singleton_2 = Singleton()
35+
36+
print(singleton_1 is singleton_2) # Es la misma clase
37+
38+
'''
39+
Extra
40+
'''
41+
42+
class UserSession:
43+
44+
_instance = None
45+
id: str = None
46+
username: str = None
47+
name: str = None
48+
email: str = None
49+
50+
def __new__(cls):
51+
if not cls._instance:
52+
cls._instance = super(UserSession, cls).__new__(cls)
53+
54+
return cls._instance
55+
56+
def set_user(self, id, username, name, email):
57+
self.id = id
58+
self.username = username
59+
self.name = name
60+
self.email = email
61+
62+
def get_user(self):
63+
return f"{self.id}, {self.username}, {self.name}, {self.email}"
64+
65+
def clear_user(self):
66+
self.id = None
67+
self.username = None
68+
self.name = None
69+
self.email = None
70+
71+
sesssion1 = UserSession()
72+
print(sesssion1)
73+
sesssion1.set_user(1, "rigo93", "Rigo", "rigo93acosta@gmail.com")
74+
print(sesssion1.get_user())
75+
76+
sesssion2 = UserSession()
77+
print(sesssion2.get_user())
78+
79+
sesssion3 = UserSession()
80+
sesssion3.clear_user()
81+
print(sesssion3.get_user())

0 commit comments

Comments
 (0)