Buenass Fernando.
Por lo que creo entender en tus post, más que una explicación teórica, lo
que quieres es entender la "practicidad" del singleton.
Como cualquier clase, puedes usarla para lo que quieras, no radica en eso la
ventaja del patrón singleton.
Sus ventajas son, primero, que sabes que únicamente vas a tener una
instancia de dicha clase, ya que si hechas un vistazo a ella, debes pasar
obligatoriamente por un método para construir la clase , al estar
privatizado su constructor natural, y en dicho método, volviendo al ejemplo
que exponia Miguel Angel :
>> public static function getInstance():Raton {
>> if (instance==null)
>> instance = new Raton();
>> return instance;
>> }
Si te fijas, hay una comprobacion previa de que no está instanciada la
clase, de manera que aseguras tener una y sólo una. Esto te resultará muy
útil en muchas ocasiones, como por ejemplo cargar sonidos ( por referenciar
uno de los que expusiste ), sabiendo que no has podido "meter la pata" y
haber instanciado dos veces tu clase, teniendo dos clases que gestionen las
cargas, con el consiguiente lio. Aquí sabes que solo tienes una siempre.
Por otra parte, el singleton guarda una referencia a sí mismo, esto es un
"pelotazo", pues te podrás olvidar de problemas de ámbitos, siendo super
cómodo acceder a ella desde donde te de la gana ( otras clases, _root, _mc
... Etc ).
Ej.:
>> Raton.getInstance().init(cursores_mc);
Como bien comentas, la tendrás disponible siempre, haciendo su
correspondiente import y puedes usarla para ..... !lo que quieras!
Solo hay un problema ..... Una vez lo usas, entiendes y utilizas sus
ventajas, entrarás en una fase de "todo lo hago con singletons", pues para
casi todo te vendra de lujo un singleton. Yo lo he usado por ponerte
ejemplos para que lo entiendas mejor, como repositorio para datos ( datos de
una sesión de usuario, almacenamiento de variables .... ), como gestor para
cualquier tipo de cosas ( lanzar eventos de sonido, gestionar menús,
popUpWindows... ), tambien utilidades como un pequeño reloj ( con fechas,
dias, hora con segundero etc.... )..... Yo que se .... Lo que se te ocurra !
( hasta he oido x ahí q el alcalde de madrid es propiamente un singleton ...
xDDDDDDD )
Luego además es super cómodo implantarlo en cualquier otro proyecto ....
Espero que te haya aclarado un poco la parte "practica" . :)
Un saludo !!
Fede .
-----Mensaje original-----
De: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] En nombre
de [EMAIL PROTECTED]
Enviado el: viernes, 22 de julio de 2005 11:30
Para: [email protected]
Asunto: Re: [ASNativos] salu2 [ Singleton ]
....perdonad q de tanto la brasa, pero ya q empece, a ver si soy capaz de
acabar.....
podriamos decir entonces q un singleton, es una clase, cuya utilidad es
comun para toda la aplicacion, por ejem. colorear mc, cargar sonidos,
cambiar el puntero como en tu caso, etc......????
----- Original Message -----
From: "Miguel Angel Sánchez" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Friday, July 22, 2005 10:23 AM
Subject: Re: [ASNativos] salu2 [ Singleton ]
Se me olvidaba decir que ahí no están todos los métodos claro...
Miguel Angel Sánchez escribió:
> Para cambiar el puntero del ratón :-P
>
> [EMAIL PROTECTED] escribió:
>
>> pues nada muchas gracias, seguire estudiando (q veo q me hace mucha
>> falta), pq sigo sin saber para q vale tu clase raton ¿¿¿????
>>
>> ----- Original Message ----- From: "Miguel Angel Sánchez"
>> <[EMAIL PROTECTED]>
>> To: <[email protected]>
>> Sent: Friday, July 22, 2005 9:01 AM
>> Subject: Re: [ASNativos] salu2 [ Singleton ]
>>
>>
>> Una clase singleton es una clase de la que solo tenemos una instancia, y
>> provee un método para acceder a esa instancia.
>> Aspectos a tener en cuenta:
>> - El constructor es privado, no se puede usar externamente.
>> - La clase guarda una instancia de sí misma en una propiedad.
>> - La clase provee de un método estático para recuperar esa instancia.
>>
>> Yo lo estoy usando para el trabajo que estoy haciendo ahora, para una
>> clase Raton, que me cambia el cursor por unos png que tengo en un
>> movieclip.
>>
>> Un ejemplillo simple:
>>
>> class Raton {
>> //variable estática privada que guarda la instancia de la clase
>> private static var instance:Raton = null;
>> private var clip:MovieClip;
>>
>> //constructor privado
>> private function Raton() {
>> }
>>
>> //Método público estático que devuelve la instancia de la clase
>> //Si no existe la crea
>> public static function getInstance():Raton {
>> if (instance==null)
>> instance = new Raton();
>> return instance;
>> }
>>
>> public function init(target:MovieClip):Void {
>> clip = target;
>> }
>> }
>>
>> Para acceder a sus métodos hay que recoger antes la instancia. Ej:
>> Raton.getInstance().init(cursores_mc);
>>
>> La primera vez que llamemos a getInstance detectará que la variable de
>> clase instance es null, y creará la instancia de la clase. Las
>> siguientes llamadas a getInstance simplemente devolverán esta instancia.
>>
>> Para llamar a cualquier otro método que creáramos tendríamos que hacerlo
>> haciendo una llamada previamente a getInstance.
>> Raton.getInstance().otroMetodo();
>>
>> O crearnos un shortcut si vamos a hacer múltiples llamadas:
>> var raton:Raton = Raton.getInstance();
>> raton.init(cursores_mc);
>> raton.otroMetodo();
>> etc
>>
>> Espero que te sirva de ayuda, un saludo
>>
>> [EMAIL PROTECTED] escribió:
>>
>>> hola q tal?, alguien tiene por ahi una explicacion del uso de las clases
>>> singleton?????, llevo un rato buscando por ahi, solo veo en ingles, y me
>>> parece asi a priori un tema un poco
>>> confuso........----------------------------------
>>> Lista ASNativos:[email protected]
>>> http://www.5dms.com/listas
>>> ----------------------------------
>>>
>>>
>>>
>> ----------------------------------
>> Lista ASNativos:[email protected]
>> http://www.5dms.com/listas
>> ----------------------------------
>>
>>
>> ----------------------------------
>> Lista ASNativos:[email protected]
>> http://www.5dms.com/listas
>> ----------------------------------
>>
> ----------------------------------
> Lista ASNativos:[email protected]
> http://www.5dms.com/listas
> ----------------------------------
>
----------------------------------
Lista ASNativos:[email protected]
http://www.5dms.com/listas
----------------------------------
----------------------------------
Lista ASNativos:[email protected]
http://www.5dms.com/listas
----------------------------------
----------------------------------
Lista ASNativos:[email protected]
http://www.5dms.com/listas
----------------------------------