Внедрение зависимостей в реальной жизни

Я создаю действительно минимальную среду MVC, чтобы расширить свои знания PHP и поставить перед собой задачу. Я подошел к тому моменту, когда классы начинают зависеть друг от друга в своей работе. Внедрение зависимостей кажется решением этой проблемы и используется некоторыми большими фреймворками .

Я нашел Bucket на Github и некоторое время возился с ним, чтобы понять основы. Но я не могу понять, когда уместно создать Контейнер?

Создание одного большого контейнера, включающего все возможные классы, которые могут потребоваться , кажется не более чем контрпродуктивным для я и я не могу представить, что это хорошая практика. По крайней мере, это похоже на рецепт плохой производительности.

В качестве альтернативы, которая заключается в создании нескольких контейнеров, я все еще не понимаю, почему вечно вонючие синглтоны больше не нужны.

Допустим, я бы хотел есть следующий код:

$session_container = new bucket_Container();
$session_container->create('Database');
$session_container->create('Database_Sessions');

$log_container = new bucket_Container();
$log_container->create('Database');
$log_container->create('Database_Log');

Итак, у нас есть два контейнера, или в этом случае сегментов для двух совершенно разных применений, которые являются взаимными из-за их зависимости от класса Database .

Моя логика подсказывает мне, что приведенный выше код создаст два независимых экземпляра класс База данных , что означает, что мне все равно придется сделать класс База данных синглтоном, чтобы гарантировать, что одновременные экземпляры подключения к моей базе данных не выполняются?

Это правильно?

20
задан Charles 23 December 2012 в 21:27
поделиться