170 похожих чатов

Всем привет! Хочу реализовать notification service, который в свою очередь должен

дергать sms-service, email-service, push-service.
Можно ли применить pattern strategy?
Мне еще нужно сохранять каждый отправленный notification. Как мне сохранять его? Внутри каждой стратегии?
Если да, то как заинжектить repository? Если через конструктор, то при создании буду передавать repository, это норм?
Или просто пометить всё как component и через autowired заинжектить?

6 ответов

14 просмотров

в джава старт

Shoxrux- Автор вопроса
Artem
в джава старт

репозиторий увидел и сразу в жаву старт 😄

твой вопрос для этого чата например: про компонент или autowired

Shoxrux- Автор вопроса

В первом приближении: sms-service, email-service, push-service - это чисто технические сервисы, они могут иметь один интерфейс и должны принимать условно адрес получателя (телефон, мыло, etc) и сообщение в notification service инжектится один или несколько этих сервисов, формируется сообщение и отправляется, какая реализация будет заинжекчена может быть детерминировано активным профилем Возможно куча разных вариантов, т.к. это зависит от бизнес-задачи

NotificationService NotificationSender NotificationRepository Sender — интерфейс с N реализациями. Repository — интерфейс с, скорее всего, одной реализацией, который отвечает за сохранение твоих нотификаций. Сам отправитель нотификаций вообще ничего не должен знать о сохранении, ибо single responsibility. Твой сервис в себе уже будет инкапсулировать общую логику. Но все это меркнет перед проблемой дедупликации доставки уведомлений, а раз этот вопрос не встаёт, то можешь реализовать как угодно.

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта