Skip to content

Commit e1efa04

Browse files
authored
Merge pull request #8867 from AnaLauDB/reto-23-java
#23 - Java
2 parents 01cf6b0 + 422ebcb commit e1efa04

File tree

1 file changed

+157
-0
lines changed

1 file changed

+157
-0
lines changed
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
public class AnaLauDB {
2+
3+
// Ejemplo genérico de Singleton
4+
public static class ConfiguracionSingleton {
5+
// Instancia única (static)
6+
private static ConfiguracionSingleton instancia;
7+
8+
// Variable de ejemplo
9+
private String configuracion;
10+
11+
// Constructor privado para evitar instanciación externa
12+
private ConfiguracionSingleton() {
13+
this.configuracion = "Configuración por defecto";
14+
}
15+
16+
// Método público para obtener la instancia única
17+
public static ConfiguracionSingleton getInstancia() {
18+
if (instancia == null) {
19+
instancia = new ConfiguracionSingleton();
20+
}
21+
return instancia;
22+
}
23+
24+
public String getConfiguracion() {
25+
return configuracion;
26+
}
27+
28+
public void setConfiguracion(String configuracion) {
29+
this.configuracion = configuracion;
30+
}
31+
}
32+
33+
// DIFICULTAD EXTRA: Singleton para sesión de usuario
34+
public static class SesionUsuario {
35+
private static SesionUsuario instancia;
36+
37+
// Datos del usuario
38+
private Integer id;
39+
private String username;
40+
private String nombre;
41+
private String email;
42+
private boolean sesionActiva;
43+
44+
// Constructor privado
45+
private SesionUsuario() {
46+
this.sesionActiva = false;
47+
}
48+
49+
// Método para obtener la instancia única
50+
public static SesionUsuario getInstancia() {
51+
if (instancia == null) {
52+
instancia = new SesionUsuario();
53+
}
54+
return instancia;
55+
}
56+
57+
// Asignar usuario (iniciar sesión)
58+
public void asignarUsuario(int id, String username, String nombre, String email) {
59+
this.id = id;
60+
this.username = username;
61+
this.nombre = nombre;
62+
this.email = email;
63+
this.sesionActiva = true;
64+
System.out.println("Sesión iniciada para: " + nombre);
65+
}
66+
67+
// Recuperar datos del usuario
68+
public void mostrarDatosUsuario() {
69+
if (sesionActiva) {
70+
System.out.println("=== Datos del Usuario ===");
71+
System.out.println("ID: " + id);
72+
System.out.println("Username: " + username);
73+
System.out.println("Nombre: " + nombre);
74+
System.out.println("Email: " + email);
75+
} else {
76+
System.out.println("No hay sesión activa");
77+
}
78+
}
79+
80+
// Borrar datos de la sesión (cerrar sesión)
81+
public void cerrarSesion() {
82+
if (sesionActiva) {
83+
System.out.println("Cerrando sesión de: " + nombre);
84+
this.id = null;
85+
this.username = null;
86+
this.nombre = null;
87+
this.email = null;
88+
this.sesionActiva = false;
89+
System.out.println("Sesión cerrada correctamente");
90+
} else {
91+
System.out.println("No hay sesión activa para cerrar");
92+
}
93+
}
94+
95+
// Verificar si hay sesión activa
96+
public boolean isSesionActiva() {
97+
return sesionActiva;
98+
}
99+
100+
// Getters
101+
public Integer getId() {
102+
return id;
103+
}
104+
105+
public String getUsername() {
106+
return username;
107+
}
108+
109+
public String getNombre() {
110+
return nombre;
111+
}
112+
113+
public String getEmail() {
114+
return email;
115+
}
116+
}
117+
118+
public static void main(String[] args) {
119+
// Ejemplo básico de Singleton
120+
System.out.println("=== Ejemplo básico de Singleton ===");
121+
ConfiguracionSingleton config1 = ConfiguracionSingleton.getInstancia();
122+
ConfiguracionSingleton config2 = ConfiguracionSingleton.getInstancia();
123+
124+
System.out.println("¿Son la misma instancia? " + (config1 == config2));
125+
126+
config1.setConfiguracion("Nueva configuración");
127+
System.out.println("Config1: " + config1.getConfiguracion());
128+
System.out.println("Config2: " + config2.getConfiguracion());
129+
130+
System.out.println("\n=== DIFICULTAD EXTRA: Sesión de Usuario ===");
131+
132+
// Obtener instancia de sesión
133+
SesionUsuario sesion1 = SesionUsuario.getInstancia();
134+
SesionUsuario sesion2 = SesionUsuario.getInstancia();
135+
136+
System.out.println("¿Son la misma instancia de sesión? " + (sesion1 == sesion2));
137+
138+
// Intentar mostrar datos sin sesión activa
139+
sesion1.mostrarDatosUsuario();
140+
141+
// Asignar usuario (iniciar sesión)
142+
sesion1.asignarUsuario(1, "analau", "Ana Laura", "[email protected]");
143+
144+
// Mostrar datos del usuario
145+
sesion1.mostrarDatosUsuario();
146+
147+
// Verificar que ambas referencias apuntan al mismo usuario
148+
System.out.println("\nVerificando desde sesion2:");
149+
sesion2.mostrarDatosUsuario();
150+
151+
// Cerrar sesión
152+
sesion2.cerrarSesion();
153+
154+
// Intentar mostrar datos después de cerrar sesión
155+
sesion1.mostrarDatosUsuario();
156+
}
157+
}

0 commit comments

Comments
 (0)