SOLID создание класса

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
Аватара пользователя
Chelobaka
Сообщения: 214
Зарегистрирован: 2018.06.01, 09:54

SOLID создание класса

Сообщение Chelobaka »

Здравствуйте,

Есть класс который отвечает за создание/редактирование коробок.
В коробке могут быть продукты.
Когда коробка получает определенный статус продукты конвертируются в продукцию и попадают на склад.

Я разделил логику приложения на различные модели.
BoxService - создание коробок/ редактирование
BoxProductService - добавление/ редактирование продуктов входящих в коробку.

1. Продукты в коробке не могут существовать без самой коробки. Значит ли это что при создании сервиса по их добавлению и удалению, сервис нужно создавать с зависимостью от коробки? То есть в конструкторе указывать BoxProductService __construct(Box $box)?

2. Создание коробки невозможно без продуктов, то есть пустой она быть не может Нужно ли добавлять BoxProductService в конструктор BoxService или достаточно создать его в нужно месте добавления продуктов? И при добавлении BoxProductService не сможет быть создан с зависимостью от Box.

3. За добавление продукции на склад отвечает ProductionService. Сама продукция обязательно включает: id продукта из коробки, id владельца коробки, id склада для хранения продукции. Нужно ли при создании этого сервиса добавлять эти данные через конструктор или их можно создавать в методе добавления продукции?
Ответить