Cuidado con los “Singletons”

1 07 2008

Una solución rápida cuando uno necesita un dato desde varios lugares es crear un singleton. Pero hay que tener cuidado con ellos.

Un singleton tiene la particularidad de que no se destruye nunca(sobre todo en lenguajes como java o actionscript), porque la referencia que tiene dentro de si impide que el garbaje colector lo recicle.

Si usamos un singleton, debemos tener cuidado de que no tenga procesos, estos siguen ejecutándose aún en estados del programa en el que no son necesarios. Mas procesos ejecutandose = mas ciclos del procesador por loop = menos frames por segundo.

En un programa orientado a objetos, las clases suelen distribuirse en forma de árbol. Cuando debamos utilizar un dato en dos clases que estan al mismo nivel pero “no se ven”, antes de utilizar un singleton debemos buscar la primer clase padre que tengan en común. Localizada la clase tenemos dos opciones:

1. Pasar la referencia al dato a travez de constructores. Esto no es muy recomendable, porque complica la interface de las clases(hay que agregar un parámetro a los constructores)

2. Que la clase que necesita el dato dispare un evento, el cual posee una referencia a si misma. El evento debe ser del tipo bubble, es decir, si la clase donde esta la referencia al objeto que dispara el evento no lo atrapa, el evento es relanzado hacia arriba en la jerarquía de clases hasta que alguna lo procesa. En la clase padre identificada previamente, capturamos el evento y seteamos el valor requerido en el objeto solicitante(cuya referencia nos llega en el evento).

Adieu!


Acciones

Informacion

Deje un comentario

usted puede usar estos tags : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word