У меня есть объект Reward
, который дает вознаграждение игроку.Как создать взаимодействие между моделью и сервисом?
Итак, когда все условия выполнены, вызывается метод executeReward()
;
Проблема в том, что реализация может быть очень различной. Например, Reward
может давать деньги игроку или начинать глобальное событие или давать игроку еще один квест (не имеющий отношения к предыдущему). То есть Я не знаю, какая логика будет выполнена. Как это можно спроектировать? С точки зрения связи между моделью и сервисом.
Опции Я думал о:
Создать награду сервис, где различные методы будут вызываться из
executeReward(RewardService rs)
метода, но это ломается «модель не знает об услуге».Организовать логику в сервисном слое. Но для этого требуется ручное сопоставление, которое уничтожает всю цель иерархии в домене.
Ничего хорошего. Есть ли хороший способ сделать это?
пс: объект вознаграждения извлекается из БД через спящий режим. Поэтому осложнение (потенциально) возникает из-за спящего режима, не вставляя службы. При этом субъекты обычно должны воздерживаться от предоставления услуг AFAIK.
В настоящее время 'executeReward' находится в объекте модели Reward? Я имею в виду, что он делает и каково ожидаемое возвращаемое значение после его выполнения? – maks
public void executeReward(); – Sarief
Например, вознаграждение может давать деньги игроку или начинать глобальное событие или давать игроку еще один квест (не имеющий отношения к предыдущему). То есть Я не знаю, какая логика будет выполнена. – Sarief