надеюсь, что я не бью мертвых лошадей здесь:)
(редактировать: ааа, я просто повторяю ссылку phils)
Синглтонная реализация Gregors не защищает от вызова конструктора с нулевым значением, как в:
var b:Blah = new Blah(null);
У вас все еще будет только 1 экземпляр, но вызов конструктора все еще возможен со следующими последствиями.
Если вам абсолютно необходимо принудительно применить синглтон, конструктор должен убедиться, что параметр принудительного применения не равен нулю.
public function Blah( enforcer : SingletonEnforcer ) {
if(!enforcer){
throw new Error("whoops!");
}
}
Вам также следует беспокоиться о ApplicationDomain при загрузке SWF-файлов. Внешние SWF-файлы, использующие те же определения, могут иметь несколько экземпляров-одиночек (по 1 в каждом отдельном домене приложения), если не указано, что SWF-файл должен быть загружен в существующий домен приложения.
Это означает, что Blah.getInstance () в AAA.swf не совпадает с экземпляром Blah.getinstance () в BBB.swf, если AAA.swf загружает BBB.swf без экземпляра LoaderContext, который сообщает плагину о загрузке BBB .swf в том же домене приложения, что и AAA.swf