Skip to content

Commit 80d137c

Browse files
authored
Merge pull request mouredev#4227 from rantamhack/main
#23-bash
2 parents 84adf84 + 1620f3b commit 80d137c

File tree

1 file changed

+109
-0
lines changed

1 file changed

+109
-0
lines changed
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
#!/bin/bash
2+
3+
echo -e "\n\n=======================================EJERCICIO=======================================\n\n"
4+
5+
# * EJERCICIO:
6+
# * Explora el patron de diseño "singleton" y muestra como crearlo
7+
# * con un ejemplo generico.
8+
9+
# * Bash no es un lenguaje orientado a objetos. Hay que simular el comportamiento de las clases
10+
11+
singleton_instance=""
12+
13+
function get_singleton_instance(){
14+
if [[ -z "$singleton_instance" ]]; then
15+
singleton_instance="instance_created"
16+
fi
17+
}
18+
19+
20+
instance1=$(get_singleton_instance)
21+
instance2=$(get_singleton_instance)
22+
23+
echo -e "\nComprobando que las dos instancias son la misma instancia:\n"
24+
25+
if [[ "$instance1" == "$instance2" ]]; then
26+
echo "True"
27+
else
28+
echo "False"
29+
fi
30+
31+
32+
33+
34+
echo -e "\n\n=======================================DIFICULTAD EXTRA=======================================\n\n"
35+
36+
37+
# * DIFICULTAD EXTRA (opcional):
38+
# * Utiliza el patron de diseño "singleton" para representar una clase que
39+
# * haga referencia a la sesion de usuario de una aplicacion ficticia.
40+
# * La sesion debe permitir asignar un usuario (id, username, nombre y email),
41+
# * recuperar los datos del usuario y borrar los datos de la sesion.
42+
43+
44+
session_id=""
45+
session_username=""
46+
session_name=""
47+
session_email=""
48+
49+
function log_in() {
50+
if [[ -z "$session_id" ]];then
51+
session_id=$1
52+
session_username=$2
53+
session_name=$3
54+
session_email=$4
55+
echo -e "\n\nEl usuario $2 iniciado sesion"
56+
else
57+
echo -e "\nYa hay un usuario con sesion iniciada\n"
58+
fi
59+
}
60+
61+
function logout() {
62+
if [[ -n "$session_id" ]]; then
63+
echo -e "\nEl usuario $session_username ha cerrado la sesion"
64+
session_id=""
65+
session_username=""
66+
session_name=""
67+
session_email=""
68+
else
69+
echo -e "\nNo hay ninguna sesion iniciada\n"
70+
fi
71+
}
72+
73+
function get_user() {
74+
if [[ -n $session_id ]]; then
75+
echo -e "\n\nUsuario actual:"
76+
echo -e "\tID: $session_id"
77+
echo -e "\tUSERNAME: $session_username"
78+
echo -e "\tNAME: $session_name"
79+
echo -e "\tEMAIL: $session_email"
80+
else
81+
echo -e "\nNo hay ninguna sesion abierta"
82+
fi
83+
}
84+
85+
86+
user1_id=1
87+
user1_username="Rantam"
88+
user1_name="Alex"
89+
user1_email="rantam@rantam.es"
90+
91+
92+
93+
user2_id=2
94+
user2_username="Junior"
95+
user2_name="Maria"
96+
user2_email="maria@rantam.es"
97+
98+
log_in $user1_id $user1_username $user1_name $user1_email
99+
get_user
100+
101+
log_in $user2_id $user2_username $user2_name $user2_email
102+
103+
logout
104+
105+
log_in $user2_id $user2_username $user2_name $user2_email
106+
get_user
107+
108+
logout
109+

0 commit comments

Comments
 (0)