Encapsular un Singleton en AS3
Una de las limitaciones (aunque no muy grave) de AS3 es la imposibilidad de crear constructores privados. Estos son especialmente útiles para mantener la encapsulación cuando queremos implementar el patrón de diseño Singleton (asegurar una sola instancia de una clase), y que es tan importante en la POO. La técnica es muy sencilla: haciendo el constructor privado nos aseguramos que ninguna otra clase puede instanciar nuestro Singleton.
Un pequeño truco para imitar este comportamiento en AS3 consiste en declarar junto al package de nuestro Singleton una clase (que solo puede ser accesible desde las clases de ese mismo package) y pasarle al constructor del Singleton una instancia de esta. Parece un poco lioso, pero con ejemplo seguro que se ve más claro:
package {
public class Singleton {
private static var _instance:Singleton;
public function Singleton(enforcer:SingletonEnforcer) {}
public static function getInstance():Singleton {
if(Singleton._instance == null) {
Singleton._instance = new Singleton(new SingletonEnforcer());
}
return Singleton._instance;
}
}
}
class SingletonEnforcer {}
Como SingletonEnforcer sólo está accesible para este package, nos aseguramos que sólo el método getInstance es capaz de instanciar la clase Singleton.
About this entry
You’re currently reading “Encapsular un Singleton en AS3,” an entry on TheKlue: Flex, Flash y otras tecnologías RIA
- Published:
- 28.03.07 / 12am
- Category:
- AS3
5 Comments
Jump to comment form | comments rss [?] | trackback uri [?]