Как правильно порождать объекты? Всем доброго вечера!
Итак, вопрос, который мучает меня уже относительно давно, но ответ так и не найден.
Пример, есть две сущности: 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 и обладает данными для их инициализации.
Соответственно, третий вариант подходит как никогда более. Не пересекается ли он с какими-либо бэст практисес или иными подхдами?

21 Авг 2019 в 07:04
191 +1
0
Ответы
1

Каждый из предложенных вариантов имеет свои достоинства и недостатки, но в данном случае использование фабрики (второй вариант) кажется наиболее логичным.

Используя фабрику, вы можете создать отдельный класс (например, WheelFactory), который будет отвечать за создание объектов Wheel. В этом случае вы сможете легко добавить дополнительную логику или проверки при создании нового объекта. Кроме того, фабрика позволит изолировать процесс создания объектов Wheel от остальной логики вашего приложения.

С использованием фабрики вы также можете передавать необходимые параметры (например, параметры транспорта) для инициализации объектов Wheel. Это позволит вам более гибко управлять созданием объектов и обеспечить правильную инициализацию.

Таким образом, использование фабрики для создания объектов Wheel в данном случае кажется наиболее целесообразным и логичным подходом.

20 Апр 2024 в 13:08
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир