Цитата:
Сообщение от undefined
 Код AS3:
Это как раз приватизация конструктора так сказать)
в чем смысл наличия флага isConstructing?
|
ну как...Там же все понятно вроде. Это приватная boolean переменная, которая может быть изменена только изнутри класса. По умолчанию она равна false.

Код AS3:
private static var _isConstructing:Boolean;
В конструкторе стоит её проверка, которая выдает ошибку при попытке создать экземпляр класса

Код AS3:
public function MySingleton() {
if (!_isConstructing) throw new Error("Singleton, use MySingleton.instance");
}
что и ограничивает создание конструктора извне класса, так как данную переменную изменить можно только изнутри. Что мы и делаем в геттере instance, единожды разрешая создание конструктора.

Код AS3:
public static function get instance():MySingleton {
if (_instance == null) {
_isConstructing = true;
_instance = new MySingleton();
_isConstructing = false;
}
return _instance;
}
причем данная операция выполняется только если переменная _instance не определена, если же экземпляр уже был создан, т1о мы просто возвращаем его, не трогая переменную _isConstructing, которая по прежнему, пребывая в false, ограничивает создание экземпляра данного класса извне.