Мне нужен фабричный объект, способный создавать несколько объектов, но впрыскивать в них другие объекты. Например:Объект объекта, создающий объекты, которым нужны другие объекты
class MyFactory
{
public function createObjectA() {
return new ObjectA(new ObjectANeededObject1(), new ObjectANeededObject1());
}
public function createObjectB() {
return new ObjectB(new ObjectBNeededObject1(), new ObjectBNeededObject1());
}
}
Если моя фабрика также создать экземпляр требуемого объекта (учитывая мой завод позволил создать любой объект)? Должен ли я передать их путем впрыска в мой заводский конструктор (но конструктор будет содержать много многих параметров)? Должен ли я передавать их в качестве параметра в свой заводский метод (но заводский клиент будет знать, как создать объект для создания, а не его обязанность знать его)? Должен ли мой завод создавать объекты-строители (способные создавать объекты и их объекты) вместо моего объекта напрямую?
Что вы посоветуете?
Спасибо,
Бен
Когда вы начали читать о [контейнерах для инъекций зависимостей] (http://www.phptherightway.com/#containers) (DIC) –
Спасибо, Марк. Если я хорошо понимаю, контейнер поможет нам создать мои разные объекты ObjectXNeddedObjectY. Но если я не ошибаюсь, это та же проблема, я читал, что я не должен давать свой контейнер всем объектам, а просто передавать объекты, созданные контейнером. Так должен ли я передать все мои объекты ObjectXNeddedObjectY (созданные моим контейнером) на мою фабрику? –
DIC должен возвращать коллекцию объектов, относящихся к классу, который должен быть создан, и фабрика может затем использовать отражение, чтобы создать экземпляр этого класса с помощью коллекции, например: http://www.php.net/manual/ ru/reflectionclass.newinstanceargs.php' –