Skip to content

Commit 672d7d2

Browse files
committed
#23 Python and gO
1 parent c568464 commit 672d7d2

File tree

2 files changed

+135
-0
lines changed

2 files changed

+135
-0
lines changed
+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"sync"
6+
)
7+
8+
type User struct {
9+
Name string
10+
Id int
11+
Email string
12+
}
13+
14+
var einMal sync.Once
15+
var UserUser *User
16+
17+
func GetI() *User {
18+
einMal.Do(func() {
19+
UserUser = &User{"", 0, ""}
20+
})
21+
return UserUser
22+
}
23+
24+
func (u *User) SetUser(name string, id int, email string) {
25+
u.Name = name
26+
u.Id = id
27+
u.Email = email
28+
29+
}
30+
31+
func (u *User) GetUser() string {
32+
if u != nil {
33+
return fmt.Sprintf(" Name %v, Id %v, Email %v", u.Name, u.Id, u.Email)
34+
}
35+
return "User is Nil"
36+
37+
}
38+
39+
func (u *User) DeleteUser() {
40+
u.Name = ""
41+
u.Id = 0
42+
u.Email = ""
43+
}
44+
45+
func main() {
46+
fmt.Println(("Singleton"))
47+
48+
user1 := GetI()
49+
user2 := GetI()
50+
user1.SetUser("Periko", 10001, "[email protected]")
51+
52+
fmt.Println(user1.GetUser())
53+
fmt.Println(user2.GetUser())
54+
user3 := GetI()
55+
user3.DeleteUser()
56+
fmt.Println(user1.GetUser())
57+
fmt.Println(user2.GetUser())
58+
fmt.Println(user3.GetUser())
59+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# /*
2+
# * EJERCICIO:
3+
# * Explora el patrón de diseño "singleton" y muestra cómo crearlo
4+
# * con un ejemplo genérico.
5+
# *
6+
# * DIFICULTAD EXTRA (opcional):
7+
# * Utiliza el patrón de diseño "singleton" para representar una clase que
8+
# * haga referencia a la sesión de usuario de una aplicación ficticia.
9+
# * La sesión debe permitir asignar un usuario (id, username, nombre y email),
10+
# * recuperar los datos del usuario y borrar los datos de la sesión.
11+
# */
12+
13+
class PaternSin:
14+
15+
_inst = None
16+
17+
18+
def __new__(qq):
19+
if qq._inst == None:
20+
qq._inst = super(PaternSin,qq).__new__(qq)
21+
qq._inst.name = ["tiburcio"] #name es variable de instancia
22+
23+
return qq._inst
24+
25+
def SetName(self, name):
26+
self.name.append(name)
27+
28+
p1 = PaternSin()
29+
p2 = PaternSin()
30+
p3 = PaternSin()
31+
32+
print(p1,p2,p3)
33+
print(p1 is p2 is p3)
34+
print("p1", p1.name)
35+
p1.SetName("segundo")
36+
print("p2", p2.name)
37+
p3.SetName("tercero")
38+
print("p3", p3.name)
39+
print("p1", p1.name)
40+
print("p2", p2.name)
41+
42+
# EXTRA
43+
44+
class User:
45+
46+
_instance = None
47+
48+
def __new__(cls):
49+
if cls._instance == None:
50+
cls._instance = super(User,cls).__new__(cls)
51+
cls._instance.ID = 1001
52+
cls._instance.Name = "Federico"
53+
cls._instance.User_Name = "fedrico_makiavelo"
54+
cls._instance._instance.email = "[email protected]"
55+
return cls._instance
56+
57+
def Get_User(self):
58+
return f" Name {self.Name} User {self .User_Name} ID {self.ID} email {self.email}"
59+
60+
def Delete_User(self):
61+
self.ID = None
62+
self.Name = None
63+
self.User_Name = None
64+
self.email = None
65+
66+
67+
68+
U1 = User()
69+
U2 = User()
70+
71+
print(U1.Get_User())
72+
print(U2.Get_User())
73+
U1.Delete_User()
74+
print(U1.Get_User())
75+
print(U2.Get_User())
76+

0 commit comments

Comments
 (0)