Чтобы добавить правильные ответы @Florian F, вот как вы можете это реализовать:
Создание интерфейса для абстрагирования доступа к файлу
public interface IGetTheStuffService {
function getSomeTofu():Tofu;
}
Создание файловой реализации
public class FileStuffService implements IGetTheStuffService {
public function getSomeTofu():Tofu {
// File-based implementation
}
}
И реализация на основе HTTP
public class HTTPStuffService implements IGetTheStuffService {
public function getSomeTofu():Tofu {
// HTTP-based implementation
}
}
У вашего потребителя положитесь на IGetTheStuffService
[Inject] public var tofuService:IGetTheStuffService;
public function doSomeStuff():void {
var tofu:Tofu = tofuService.getSomeTofu();
// act on the tofu
}
Обратите внимание на метатег Inject . Именно здесь ваша система Dependency Injection (DI) будет выдвигать вашу зависимость на основе конфигурации (FileStuffService для приложений Air или HTTPStuffService для веб-приложений). Петрушка и RobotLegs используют [Inject] , где fiex-ioc использует [IocBind]
Конечно, вы можете обойтись без контейнера DI ... вы просто вставите параметр напрямую.
Но вы поняли ... довольно простой шаблон, на самом деле.