![]() |
Глобальный доступ к объекту без синглотона или ДИ
Допустим есть такой класс ResourseManager, который абстрагирует доступ приложения к разному типу данных (картинки, звуки, тескта и т.д.).
Все приложение получает данные именно через него. Что бы дать всему приложению доступ на него существует несколько разных способов: 1 - Синглтон. Думаю что реализацию и возможные проблемы вы уже знаете. 2 - ДИ. Вообщем для данной проблемы не плохой подход, однако не хочется прикручивать ДИ движок к приложению, так как это преопределит его архитектуру не так как мне этого хочется. 3 - Впихнуть ResourseManager в основную модельку и через нее все получать. То же вроде бы не плохой вариант, однако мне кажется идеологически не правельным засовывать ResourseManager в модель, так как хотелось бы что бы у представления была непосредственная ссылка на него. 4 - Можно кидать евент, в который передать каллбек. Евент будет ловится медиатором, и обработчике будет вызыватся коллбек, как только данные будут загружатся. Вообщем этот вариант конечно полностью отгораживает нас от ссылки на ресоурс менеджер, но тогда каждое обращение к ResourseManager выльется в несколько строчек. Да и вообще мне кажется это не правильным, так как код будет не приятным для обслуживания, дебага и вообще это просто не правильно :) Вообщем посоветуйте плиз, как реализовать функционал общего доступа, что бы он был как можно более гибок, и как можно менее затратен в плане написания кода каждого обращения к нему. Зарание благодарен. |
Синглтон. Какую реализацию вы хотите использовать и какие проблемы вы предвидите? Я вот в данном случае особых проблем не вижу.
|
Минусы синглтона это почти минусы глобального доступа, вы хотите глобальный доступ без глобального доступа.
У меня это статическая функция вообще и не парюсь) |
Накидаю возможный пример (если синглтон):
Код AS3:
Код AS3:
Добавлено через 2 минуты Цитата:
|
Только ведь объекты созданные в классе-документе приложения могут / должны пользоваться ресурсами - логично сделать ссылку на менеджер ресурсов свойством этого класса. Соответственно, таким образом можно избежать накладок при загрузке одной флешки в другую - когда статические методы перекроются. Собственно, loaderInfo.applicationDomain.getDefinition() выполняет ту самую задачу, с которой вы столкнулись. Выполняет ее нормально, не вижу смысла делать по-другому.
|
wvxvw, я не очень понял что Вы имеете ввиду.
Для простоты примера: Код AS3:
Цитата:
|
Цитата:
Но чтобы такого не было, помоему мвс для этого и сделали |
in4core, нет. Как сделать так, что бы ссылку на этот объект можно было получить через loaderInfo.applicationDomain.getDefinition()? Он же ссылку на класс мне вернет а не на конкретный объект...
|
Почему? - потому что вы не знаете кто может загрузить эту флешку, и нужны ли загрузчику те же статические переменные, что и данной флешке.
Как раздать ссылку? - Код AS3:
|
Цитата:
|
| Часовой пояс GMT +4, время: 14:41. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.