Comments 8
Добавляем NotificationResponseListener, потому что принимать письма это принципиально новая работа для нашей системы
В NotificationService добавляем логику сопоставления запроса с ответом, потому что он формирует запрос. Так же для логично и привычно, чтобы получать ответ в том же месте, куда его отправили.
Ну привычно допустим - каждому своё. А логично то почему? Особенно если "принимать письма это принципиально новая работа для нашей системы".
Почему NotificationResponseListener не может заинджектить AuthService и разлогинить?
Принципиально новая логика, потому что это интеграционное взаимодействие, в рамках которого нужно тянуть данные с почтового ящика. Это полноценная отдельная сложная работа, которую нельзя просто так вмазать в то что уже есть, нужно изолировать.
Привычно и логично, потому что по своей сути это вызов функции с возвращаемым значением, и хотелось бы чтобы это так и выглядело (как вызов метода, для этого и был дан "рецепт 2"), независимо от того как оно устроено внутри. Не должно быть распадания на 2 независимых потока (исходящий и входящий).
NotificationResponseListener не имеет полномочий принимать решение о том что нужно разлогинить, это ответственность AuthService.
NotificationResponseListener только обеспечивает входной трафик, не вдаваясь в суть входящих сообщений.
Не должно быть распадания на 2 независимых потока (исходящий и входящий).
Это как? Сама физика мира разделяет на входящий и исходящий потоки.
Да, физически это 2 отдельных потока, но в этом и смысл дизайна, чтобы не обременять AuthService особенностями физики, а дать понятную абстракцию "запрос-ответ-реакция".
Вы же если в магазине заказываете товар которого нет в наличии приходите забирать его в этот же магазин, а не едете на склад.
Да, поездка на склад вполне рабочий вариант, но будет не очень удобно
Причём здесь AuthService? Я спрашивал зачем вы пытаетесь процесс "разлогинить пользователя" запихать в нотификации?
Если у вас появится нотификация "предложить юзеру участие в акции". Вы пользователя к акции тоже будете в сервисе нотификаций подключать?
Не, ни в коем случае я этого не пытаюсь сделать,
задача NotificztionService соединить запрос с ответом и отдать событие о том, что ответ получен сервисуу который генерировал запрос. В нашем случае AuthService, а уже его задача принять решение о разлогине.
Согласен что в примере не однозначно отразил идею, подумаю как скорректировать. Хотя я явно прописал, что в NotificationService нельзя явно вызывать логику разлогина
"Я сюда ни философствовать пришел"
Очепятка, здесь должно было быть "не".
Циклическая зависимость, давайте жить дружно