Я пытаюсь использовать Dependency Injection как можно чаще, но у меня возникают проблемы, когда речь идет о таких вещах, как краткосрочные зависимости.
Например, допустим, у меня есть объект менеджера блога, который бынравится генерировать список блогов, которые он нашел в базе данных.Варианты сделать это (насколько я могу судить):
- new Blog ();
- $ this-> loader-> blog ();
- объект загрузчика создает различные другие типы объектов, такие как объекты базы данных, текстовые фильтры и т. Д.
- $ this-> blogEntryFactory-> create ();
Однако # 1 плох, потому что он создает сильную связь.# 2 по-прежнему кажется плохим, потому что это означает, что фабрика объектов должна быть предварительно введена - выставляя все другие объекты, которые она может создать.
Номер 3 кажется нормальным, но если я использую # 3, я помещу«новые» ключевые слова в самом blogEntryFactory, ИЛИ, вставить ли загрузчик в blogEntryFactory и использовать загрузчик?
Если у меня много разных фабрик, таких как blogEntryFactory (например, у меня могут быть userFactory и commentFactory), это будетпохоже, что добавление ключевого слова "new" на все эти разные фабрики создаст проблемы с зависимостями.
Надеюсь, это имеет смысл ...
NOTE
У меня есть несколько ответов о том, как это не нужно для этого конкретного примера блога, но на самом деле бывают случаи, когда вам следует использовать шаблон Abstract Factory, и именно к этому я и подхожу.Вы используете «новый» в этом случае или делаете что-то еще?