Фабрика создает объекты, которые нуждаются в других объектах

Мне нужен фабричный объект, способный создавать несколько объектов, но вводить в них другие объекты.
Например:

class MyFactory
{
public function createObjectA() {
return new ObjectA(new ObjectANeededObject1(), new ObjectANeededObject1());
}

public function createObjectB() {
return new ObjectB(new ObjectBNeededObject1(), new ObjectBNeededObject1());
}
}

Должна ли моя фабрика также создавать экземпляр необходимого объекта (учитывая, что моей фабрике разрешено создавать любые объекты)?
Должен ли я передать их путем инъекции в конструктор фабрики (но конструктор будет содержать много много много параметров)?
Должен ли я передать их в качестве параметра в мой метод фабрики (но клиент фабрики будет тогда знать, как должен создаваться создаваемый объект, и не обязан знать его)?
Должна ли моя фабрика создавать конструкторы объектов (способные создавать мои объекты и их требуемые объекты) вместо моего объекта напрямую?

Что вы рекомендуете?

Спасибо,

Бен

3

Решение

Твой класс Factory не должен знать, как создать экземпляр объекта из класса ObjectBNeededObject1потому что если конструктор изменится, вам придется вернуться и к классу Factory и сделать необходимую работу, чтобы избежать регрессии

ОБНОВЛЕНО

class MyFactory
{
public static function createObjectA($object1, $object2) {
return new ObjectA($object1, $object2);
}

public static function createObjectB($object1, $object2) {
return new ObjectB($object1, $object2);
}
}

$objectA = MyFactory->createObjectA(new ObjectANeededObject1(), new ObjectANeededObject1());
$objectB = MyFactory->createObjectB(new ObjectANeededObject1(), new ObjectANeededObject1());
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]