Показать сообщение отдельно
Старый 10.04.2012, 15:18
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 9  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Почему? - потому что вы не знаете кто может загрузить эту флешку, и нужны ли загрузчику те же статические переменные, что и данной флешке.

Как раздать ссылку? -
Код AS3:
public class Main extends Sprite implements IResourcemanager {
 
// Получить ссылку на класс конструктор ресурса.
public function recourceFactory(id:String):Class {
return this._knownClasses[id];
}
 
// Возможно, ресурсы кешируются, используются по-новой.
public functin resource(id:String):Object {
return this._availableResources[id];
}
 
public function recycle(id:String, resource:Object):void {
this._availableResources[id] = resource;
}
 
public function Main() {
super();
ResourceManager.addManager(this);
}
. . .
/* ResourceManager */
public static function addManager(manager:IResourceManager):void {
_managers[getQualifiedClassName(manager)] = manager;
}
public static function getResource(manager:String, id:String):Object {
return _managers[manager].resource(id);
}
. . .
Поскольку два одинаковых Main класса загрузить в одну флешку, в один домейн все равно не получится, мы можем смело расчитывать на то, что getQualifiedClassName() будет уникальным. Таким образом мы, не создавая лишних зависимостей, "знаем" только про Resourcemanager + IResourceManager и избегаем ситуации, когда менеджер один на всех, а загрузило его две разные флешки.
__________________
Hell is the possibility of sanity