Solucion Problema 5
Hola a todos,
Como me apunto de forma correcta el Cremero, esta es la solucion al problema 5. Aqui os pongo la solucion que el Cremero me envio por e-mail:
La solución es sencilla: se aplica una implementación del patrón de diseño denominado “Singleton” (un solo objeto en memoria):
public class UnaSolaVez {
private static UnaSolaVez ObjetoUnaSolaVez == null; // objeto interno, que luego devolveremos
private UnaSolaVez() {
// no dejamos instanciar con el constructor por defecto, declarándolo privado
}
public static UnaSolaVez getObjetoUnaSolaVez() {
if (ObjetoUnaSolaVez == null) // si no se ha reservado memoria entonces lo hacemos
ObjetoUnaSolaVez = new UnaSolaVez();
return ObjetoUnaSolaVez;
}
};
Como veis es muy sencillo. Aunque es algo mas complicado garantizar que solo se crea un objeto si tenemos varios hillos ejecutandose a la vez. O si tenemos varios "namespaces", en estos casos hay que hacer ciertos cambios en el codigo. No es extremadamente dificil resolver el problema de los hilos concurrentes asi que os animo a comentar esta entrada con vuestras sugerencias!!
Como me apunto de forma correcta el Cremero, esta es la solucion al problema 5. Aqui os pongo la solucion que el Cremero me envio por e-mail:
La solución es sencilla: se aplica una implementación del patrón de diseño denominado “Singleton” (un solo objeto en memoria):
public class UnaSolaVez {
private static UnaSolaVez ObjetoUnaSolaVez == null; // objeto interno, que luego devolveremos
private UnaSolaVez() {
// no dejamos instanciar con el constructor por defecto, declarándolo privado
}
public static UnaSolaVez getObjetoUnaSolaVez() {
if (ObjetoUnaSolaVez == null) // si no se ha reservado memoria entonces lo hacemos
ObjetoUnaSolaVez = new UnaSolaVez();
return ObjetoUnaSolaVez;
}
};
Como veis es muy sencillo. Aunque es algo mas complicado garantizar que solo se crea un objeto si tenemos varios hillos ejecutandose a la vez. O si tenemos varios "namespaces", en estos casos hay que hacer ciertos cambios en el codigo. No es extremadamente dificil resolver el problema de los hilos concurrentes asi que os animo a comentar esta entrada con vuestras sugerencias!!
1 Comments:
Querido amigo, esto no es nada mas ni nada menos que el viejo y querido patrón singleton! Que haríamos si no fuera por él! El mismo se usa para acceder globalmente a una única instancia de una clase.
Saludos,
Pablo Pazos Gutierrez.
By Pablo, at 4:46 PM
Post a Comment
<< Home