2016-04-05 1 views
0

Предположим, что у меня есть сущности A и B. Для каждого из них у меня есть serviceX и repositoryX. Если, из serviceA, мне нужно что-то от B: не следует ли мне называть serviceB? или мне нужно напрямую вызвать репозиторий?Рекомендации: услуги, вызывающие другие службы или непосредственно хранилища?

Заранее спасибо.

+0

Что означает «прямое вызов»? Как ваши репозитории и сервисы доступны даже без использования сущностей? Планируете ли вы представить их через синглеты, поставщиков услуг или тому подобное? Нам нужны подробности, я думаю, – IceFire

+0

Спасибо за ваш комментарий. Я был в общем. Я думал, что будет понятно, что существует репозиторий A с некоторыми операциями над сущностью A и serviceA для управления бизнес-логикой A. То же самое для Б. Они одиночные, да. Речь идет о лучших практиках. Это нормально, что для метода в serviceA для пользователя repositoryB.foo() или он должен вызывать метод serviceB.foo(), который вызывает repositoryB.foo()? – ldepablo

ответ

1

Как я могу понять, у вас есть в случае A и B два уровня: бизнес-логика (услуга) и доступ к данным (репозиторий). Лучшей практикой является просмотр A и B как отдельных компонентов, которые обмениваются данными через интерфейсы. Доступ к данным для A должен быть закрытым для компонента A. Поэтому, если компоненту B нужны некоторые данные из компонента A, он должен попросить компонент A использовать его открытый интерфейс, а не его уровень доступа к данным.

+0

Спасибо за ваш ответ. На самом деле я это делаю. Просто я получаю круговые ссылки, но я не вижу способа избежать их. Я отправлю новый вопрос. – ldepablo