#architecture #onion-architecture #hexagonal-architecture
#архитектура #onion-архитектура #шестиугольная архитектура
Вопрос:
Мне нужно знать, соответствует ли объект (пользователь) заданным некоторым критериям. Я определил критерии в домене, и они реализуют интерфейс:
match(User)bool
Теперь проблема в том, что одному критерию нужны данные другого объекта (Компании), а у пользователя есть только идентификатор компании.
Как я должен с этим справиться? Могу ли я создать интерфейс в домене (CompanyResolver) и использовать его в criterion? этот интерфейс будет реализован репозиторием.
Спасибо
Ответ №1:
ОК. Учитывая вариант использования, вы можете реализовать бизнес-логику в методе объекта пользовательского домена следующим образом, в зависимости от вашего агрегата (пользователь или компания):
class User {
match(Company company) {
// your logic
}
}
Или
class Company {
match(User user) {
// your logic
}
}
Перед вызовом этого метода необходимо подготовить все данные из репозитория.
Если вам нужны более подробные сведения, попробуйте подробнее задокументировать свою проблему.
В любом случае домен должен быть независимым от всех остальных модулей.