Наконец решил использовать Singleton явно и в полную силу.
С удивлением обнаружил что раньше не вставил ссылку на эту статью в свой блог и теперь потратил время чтобы перерыть flash-ripper в поисках ссылки...
Итак, как резюме - здесь пример паттерна на AS3, хотя никто нам не мешает модифицировать и использовать этот код для AS2 (правда уже не получится реализовать такой же запрет на инстанцирование через конструктор).
* * *
Запрет на инстанцирование на AS2 делается еще проще чем на AS3, так как есть возможность объявить конструктор класса как private.
5 комментариев:
Это. Singletone является примером антипаттерна. И к нему применимо простое правило: десять раз подумай прежде чем его использовать.
В AS2, кстати, все как раз проще. Просто делаешь приватный конструктор :))
Хм... А слона то я и не приметил :). Спасибо!
Кстати, насчет антипаттерна - История такова (в абстракциях):
Есть пара-тройка объектов, которые по принципу программы одни в своем роде. Их обычно создает и хранит какой-то главный объект типа Main, Root и т.п.
В процессе проектирования выясняется что несколько объектов должны знать о них. Передаем им ссылочки.
Далее, в процессе разработки всплыли и другие желающие. Им ссылочки дать стало сложнее. В итоге - выясняется, что все эти "передай другому" ужастно портят картину.
Хотя, если с другой стороны посмотреть - вроде и правильно - есть контроль доступа - кому дал тот и может иметь доступ к ним.
Другой способ - включить объекты в цепочку рассылки и запрашивать/получать данные через некоторую систему сообщений. Недостаток - на мой взгляд упадет производительность. Формировать запросы, рассылать и т.п.
Сделав эти пару-тройку объектов одиночками с глобальным доступом мы откроем доступ к ним любому объекту.
Самому не очень нравится, но если не злоупотреблять, это может стать хорошей практикой. Ведь пользуемся же мы Math, Keyboard, Mouse и т.п.
я програмирую достаточно давно и ксвоему удивлению использовал интуитивно несколько паттернов до того как о узнал что они существуют вообще. (конечно не в такой изящной форме в которой они расписаны в туториалах, но функциональность была идентична)
сейчас начинаю проект, игрушка типа lines,tetris,block breaker,arcanoid
програмирую в AS3
впервые задумался о том что можно не ломать голову над тем как спланировать прогу от начала до конца в уме или на бумаге,- а взять готовый набор паттернов и всё будет хорошо )))
какими патернами лучше воспользоваться в решении данной задачи что-б потом разгребать меньше проблем ???
думаю использовать MVC, render засуну во view, а обьекты такие как plane,cube,etc... определю в Model которые будут рэндирится уже во view, есть ещё такие веши как счётчик очков, лэвэлов и может быть логин с аутенфикацией - которые я сделаю синглтонами а там будет видно куда их подклюьчать
в правильнои-ли направлении работает моя мысль
не поленитесь ответить - это сэкономит мне много времени и сил
заранее огромное спасибо
Нормал, единственное - я б не советовал плодить синглтоны. Например, авторизацию в синглтон оформлять нет смысла - сделать ее отдельным не связанным с другими модулем. Синглтон использовать только для глобального доступа к каким-то совсем общим данным и сервисным функциям, которые повсюду нужны и не сильно влияют на общую логику приложения. Иначе количество взаимосвязей между модулями сильно увеличится и потом черт ногу сломит.
спасибо за совет.
Отправить комментарий