Нужны ошибки компиляции при создании экземпляра синглетона извне? Запросто!
Саму идею синглетонов не очень люблю, и очень редко их использую, но тут в курилке товарищ подсказал способ, как в as3 сделать не рантайм еррор при создании экземпляра синглетона, а ошибку компиляции.
Собственно, расписывать код не буду - проще показать:
package { public class Singleton { private static var _instance:Singleton; public var value:int = 1; public function Singleton(protector:Protector) { } static public function get instance():Singleton { if (!_instance) _instance = new Singleton( new Protector()); return _instance; } } } internal class Protector{ public function Protector() { super(); } }
а вот тут ошибка компиляции, т.к. никому кроме синглетона,
не получить доступ к классу Protecor
Не претендую на первооткрывателя и можете меня называть аккордеонистом, но я про этот способ услышал только сегодня.
UPD
Особо кривые ручки всё равно обойдут этот приём написав
Тут можно, конечно, проверять параметр в конструкторе на null, но это будет уже не то..
Печаль
Всего комментариев 10
Комментарии
13.09.2013 01:05 | |
Уже видел ранее этот вариант, но только сейчас въехал, что вся прелесть в ошибке на этапе компиляции!
Спасибо. |
13.09.2013 01:12 | |
Прикольно.
|
13.09.2013 10:19 | |
Такой же пример синглтона описывается в книге Шаблонов проектирования
Очень удобный способ, использую его при необходимости. пс. Да и ещё нужно добавить проверку на передачу в конструктор null. |
|
Обновил(-а) Tails 13.09.2013 в 10:37
|
13.09.2013 15:20 | |
13.09.2013 15:52 | |
Постоянное обращение к статическому классу не затратное действие? Вроде-бы это последняя область поиска определения.
|
13.09.2013 16:37 | |
Tails, не представляю себе синглтон в качестве класса для реализации задач с жесткими требованиями к производительности. Статик пойдет.
|
13.09.2013 17:01 | |
Ну да, так-то
Цитата:
SoundManager.playSound(mySound);
|
13.09.2013 20:32 | |
@Tails
Плодите SomeClass-ов хоть тысячи или раширяйте BaseClass и плодите других наследников, но ссыль на синглтон будет одна и всем доступна и... симпатична |
13.09.2013 23:32 | |
Ээээ это баян ппц какой давности.
|
Последние записи от Котяра
- Страх и ненависть в Нью-Дели или сборка мультипака для arm7 и x86 c Adobe AIR 14 в FB (16.06.2014)
- Нативный EventDispatcher в старлинге (27.11.2013)
- Нужны ошибки компиляции при создании экземпляра синглетона извне? Запросто! (13.09.2013)
- ARP - новый формат упаковки ресурсов (07.02.2013)
- DropShadowFilter и GlowFilter в Starling (16.01.2013)