Как спроектировать агрегатор? Добрый день. Необходимо присваивать рейтинг организации. public function __construct(
OrganizationID $id,
Name $name,
array $phones,
array $addresses,
Specialization $specialization
) { }
Первоначальный рейтинг может присваиваться при сохранении организации и зависит от Specialization (это специализации организации, чем больше, тем лучше). Как это организовать?
Делать это в сервисе при создании?public function create(OrganizationRepositoryInterface $repository, OrganizationRatingService $rating): void
{
$organization = new Organization(
...
$this->repository = add($organization)
$rating (Вот что сюда передать, только специализации? а как потом сохранить?
)
}
Считать ли рейтинг сразу в Entity при создании? Типа public function __construct(
OrganizationID $id,
Name $name,
array $phones,
array $addresses,
Specialization $specialization,
OrganizationRatingService $rating
) {
$rating->setRating($specialization);
}
Как правильно? Установка рейтинга - это бизнес правило. Вроде тогда должно быть в сущности. С другой стороны - сам сервис рейтинга это много всеразличных вариантов и захламлять сущность как то не очень.
Где его считать?

21 Авг 2019 в 06:58
178 +1
0
Ответы
1

Для правильного проектирования агрегатора и рейтинга организаций можно рассмотреть следующие варианты:

Считать рейтинг сразу в Entity при создании: в этом случае вы можете передавать объект OrganizationRatingService в конструктор сущности и при создании сущности сразу вычислять и устанавливать рейтинг на основе специализации. Этот способ удобен, если рейтинг зависит только от специализации и других данных сущности.

Рассчитывать рейтинг в сервисе при создании сущности: в этом случае можно передавать в сервис OrganizationRatingService только необходимые данные для рассчета рейтинга (например, специализацию). После создания сущности в сервисе можно рассчитать рейтинг и сохранить его в базу данных.

Рассмотреть использование событийной модели: вы можете создать обработчик событий (например, при создании организации) и в этом обработчике рассчитывать рейтинг организации на основе специализации. Этот подход позволяет разделить логику вычисления рейтинга от сущности и сервиса, что может быть удобным для поддержки и изменений в будущем.

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

20 Апр в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 683 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир