Вызов репозитория из домена с интерфейсом Hexagonal Architecture

Мне нужно знать, соответствует ли сущность (пользователь) некоторым критериям. Я определил критерии в домене, и они реализуют интерфейс:

match(User)bool

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

Как мне с этим справиться? Могу ли я создать интерфейс в домене (CompanyResolver) и использовать его в критерии? этот интерфейс будет реализован репозиторием.

Спасибо


person xmartinez    schedule 20.08.2020    source источник


Ответы (1)


Ok. Учитывая вариант использования, вы можете реализовать бизнес-логику в методе сущности домена пользователя следующим образом, в зависимости от вашего агрегата (пользователь или компания):

class User {
    match(Company company) {
        // your logic
    }
}

Or

class Company {
    match(User user) {
        // your logic
    }
}

Перед вызовом этого метода необходимо подготовить все данные из репозитория.

Если вы хотите получить более подробную информацию, попробуйте задокументировать свою проблему.

В любом случае домен должен быть независимым от всех остальных модулей.

person slim    schedule 31.08.2020