Service Locator, Dependency Injection (и Container) и Inversion of Control

Я программировал некоторое время, но никогда не интересовался теоретическим знанием того, что означает каждое понятие, я могу использовать множество концепций программирования, но не зная об этом.

Сервисный локатор: Для меня это относится к набору ярлыков для ускорения разработки за счет уменьшения объема кода. Один вопрос: может ли Locator ссылаться только на пространства имен/классы, или у меня может быть реестр переменных?

Вот мое понимание этого:

$locator = new ServiceLocator()
$locator->set('app', new System\Application());
$locator->set('db', new System\Pdo());

// Get the objects
$locator->get('db')->connect();
$locator->get('app')->run();

Внедрение зависимостей (и контейнер внедрения зависимостей): Внедрение объектов в объекты, обеспечивающее более быстрый доступ к ним независимо от фабричного шаблона. И контейнер DI?

Вот мое понимание этого:

$app = new System\Application(System\Config::load());

Инверсия управления: Не понимаю этот шаблон проектирования (или понимаю, но не знаю, является ли то, что я делаю, IoC)

Тогда, теоретически (желательно с простыми примерами), что означает каждое из этих понятий? Я прав или что не так/можно исправить?

Спасибо!

12
задан Benjamin 18 July 2012 в 10:49
поделиться