Em AS não existe uma forma de criar um método construtor de uma classe como private para assim podermos usar o Design Pattern Singleton.
Métodos construtores só podem ser public sendo opcional a sua presença.
Se a sua classe herda de outra é uma boa prática fazer a chamada explícita ao método construtor da superclasse usando super(), mas caso você esqueça não tem problema, se o compilador não encontrar esta chamada, então ele irá colocar como primeiro comando do seu construtor.
Se você não criar um método construtor também não tem problema, pois o compilador cria um método construtor vazio colocando super() dentro.
Outra coisa interessante é que você pode usar o comando return no método construtor, desde que não retorne nenhum valor.
Mas se você precisar usar o Design Pattern Singleton você pode usar o seguinte código:
package mypackage {
public class ClassSingleton {
private static var instance:ClassSingleton;
public function ClassSingleton(enforcer:SingletonEnforcer) {
if (enforcer == null) {
throw new ReferenceError("Essa classe é Singleton. Utilize getInstance.");
}
}
public static function getInstance():ClassSingleton {
if (ClassSingleton.instance == null) {
ClassSingleton.instance = new ClassSingleton (new SingletonEnforcer());
}
return ClassSingleton.instance;
}
}
}
/** Classe utilitária para proibir o acesso ao construtor da classe Singleton. */
class SingletonEnforcer { }
Métodos construtores só podem ser public sendo opcional a sua presença.
Se a sua classe herda de outra é uma boa prática fazer a chamada explícita ao método construtor da superclasse usando super(), mas caso você esqueça não tem problema, se o compilador não encontrar esta chamada, então ele irá colocar como primeiro comando do seu construtor.
Se você não criar um método construtor também não tem problema, pois o compilador cria um método construtor vazio colocando super() dentro.
Outra coisa interessante é que você pode usar o comando return no método construtor, desde que não retorne nenhum valor.
Mas se você precisar usar o Design Pattern Singleton você pode usar o seguinte código:
package mypackage {
public class ClassSingleton {
private static var instance:ClassSingleton;
public function ClassSingleton(enforcer:SingletonEnforcer) {
if (enforcer == null) {
throw new ReferenceError("Essa classe é Singleton. Utilize getInstance.");
}
}
public static function getInstance():ClassSingleton {
if (ClassSingleton.instance == null) {
ClassSingleton.instance = new ClassSingleton (new SingletonEnforcer());
}
return ClassSingleton.instance;
}
}
}
/** Classe utilitária para proibir o acesso ao construtor da classe Singleton. */
class SingletonEnforcer { }