Всем доброго вечера!
Итак, вопрос, который мучает меня уже относительно давно, но ответ так и не найден.
Пример, есть две сущности: Transport и Wheel. (Транспорт и Колесо)
Между ними установлена связь: один-ко-многим, т.е. у одного транспортного средства может быть много колес.
Как правильней порождать новые Wheel?
По идее, я могу генерировать новый объект Wheel:
- Обычными вызовам
$wheel = new Wheel();
И далее выставлять все свойства вручную - Через фабрику как сервис, например, /model/WheelFactory
$wheel = $wheelFactory->createWheel($someKindOfTransport);
- Через реализацию метода createWheel в классе Transport
$car = new Transport();
$wheel = $car->createWheel();
Вопрос - как логичней это делать? Учитывая то, что в сущности Wheel по-умолчанию нужно установить нек-рые параметры, к-рые зависят от параметров родителя, т.е. сущности Transport.
Согласно паттерну Creator из принципов GRASP, объект Transport является контейнером для коллекции объектов Wheel и обладает данными для их инициализации.
Соответственно, третий вариант подходит как никогда более. Не пересекается ли он с какими-либо бэст практисес или иными подхдами?