La era de la informatica

Sunday, April 22, 2007

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!!

Friday, April 13, 2007

Problema 5: un solo objeto

En este quinto problema vamos a utilizar Java. Como Java es muy facilito y mucha gente lo conoce bien, espero que mucha gente se anime a intentarlo.
El problema consiste en crear una clase en Java, definida publica y no estatica, que solo permita ser instanciada una vez. Es decir que si intentamos instanciarla varias veces en el codigo, en realidad solo tendremos un objeto creado en memoria.

Ya sabeis, como siempre deshabilito los comentarios y espero vuestras respuestas en mi email. Suerte.
Hasta la proxima.