ActionScript 3 – Singleton

O ActionScript 3 não permitia o uso do construtor privado, mas se quisermos usar o padrão de instância única, precisamos de algum método complicado para implementá-lo.


package {
class Singleton {
private static var _instance:Singleton = null;

public function Singleton(caller:Function) {
if(caller != preventCreation) {
throw new Error("This is a singleton class, please use getInstance() method.");
}
}

private function preventCreation():void {}

public static function getInstance():Singleton {
if(Singleton._instance) {
return Singleton._instance;
}
Singleton._instance = new Singleton(this.preventCreation);
return Singleton.instance;
}
}
}

Acabamos de fazer um método “privado” para limitar a instância de criação do construtor diretamente, então só podemos usar o método getInstance () para obter a instância.