Do Абстрактные фабрики используют «новый»?

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

Например, допустим, у меня есть объект менеджера блога, который мог бы хотел бы создать список блогов, найденных в базе данных. Варианты для этого (насколько я могу судить) следующие:

  1. new Blog ();
  2. $ this-> loader-> blog () ;
    • объект загрузчика создает различные другие типы объектов, такие как объекты базы данных, текстовые фильтры и т. Д.
  3. $ this-> blogEntryFactory-> create ();

Однако №1 плох, потому что он создает сильную связь . №2 по-прежнему кажется плохим, потому что это означает, что фабрика объектов должна быть предварительно внедрена, показывая все другие объекты, которые она может создать.

Номер 3 кажется нормальным, но если я использую номер 3, могу ли я поместить «новые» ключевые слова в сам объект blogEntryFactory ИЛИ ввести загрузчик в blogEntryFactory и использовать его?

Если у меня их много различные фабрики, такие как blogEntryFactory (например, у меня могли бы быть userFactory и commentFactory), казалось бы, размещение ключевого слова «новое» во всех этих различных фабриках создало бы проблемы с зависимостями.

Надеюсь, это имеет смысл ...

ПРИМЕЧАНИЕ

У меня было несколько ответов о том, что в этом конкретном примере блога нет необходимости, но на самом деле есть случаи, когда вам следует использовать шаблон абстрактной фабрики , и это то, к чему я прихожу. Вы используете в этом случае «новый» или делаете что-то еще?

8
задан johnnietheblack 2 February 2012 в 21:07
поделиться