Накидаю возможный пример (если синглтон):

Код AS3:
public class BaseImage extends Sprite{
public function BaseImage(uri:String = ""){
if(uri) this.uri = uri;
}
public function set uri(s:String):void{
ResourseManager.instanse.getResourse(s, _onImageReceived);
}
private function _onImageReceived(image:*):void{
if(image is BitmapData){
addChild(new Bitmap(image as BitmapData));
}else{
addChild(image);
}
}
}
Тут вроде бы всё ок, так как доступ скрыт в отдельном компоненте. Однако ResourseManager не только скармливает, но и кушает:

Код AS3:
public class UIProvider implements IResourseProvider{
[Embed(source="example.png")]
public var example:Class;
public function UIProvider(){
ResourseManager.instanse.registerNamespace("ui", this);
}
public function getResourse(urn:String, callback):void{
callback(new (this[urn] as Class)());
}
}
Вот такой пример мне нравится гораздо меньше, так как классы такого типа могут находится в различных модулях приложения. Получается что все эти модули должны будут иметь ссылку на модуль в котором лежит ResourseManager, что мне и не нравится. Не говоря уже о том, что все они 100% работают с конкретной релизацией, а не с интерфейсом.
Добавлено через 2 минуты
Цитата:
|
вы хотите глобальный доступ без глобального доступа.
|
Что то вроде этого
