Как реализовать в таком случае паттерн медиатор?

У меня есть три независимые друг от друга модуля: работа с Redis, работа с БД и работа с telegram-ботом. Хочу связать их друг с другом с помощью паттерна медиатор и не совсем понимаю, как правильнее это сделать.

Боту приходит сообщение от пользователя, и мне надо:
1) записать в БД данные (db.save(data, table))
2) записать в Redis данные (redis.saveSession(id, level))
3) ответить пользователю (app.sendMessage(id, 'text'))

И как это сделать?
Стандартный вариант не подходит, так как надо передать три разные функции, которые принимают разное кол-во входных параметров
const mediator = new Mediator();
mediator.on('event', someFunc); //не подходит

Так как быть? Передавать массив функций? Или я что-то вообще не так делаю?
  • Вопрос задан
  • 772 просмотра
Решения вопроса 2
Вам тут вообще не уперся медиатор. Какой-нибудь конвеер команд/мидлвэйров подошел бы.
Ответ написан
Комментировать
qonand
@qonand
Software Engineer
Тут важно понимать является ли запись в БД и Redis обязательной в процедуре обработки запроса ботом. Если она обязательна - тогда просто нужно сделать Ваши модули зависимыми (как это лучше сделать это уже другой вопрос). Если же нет тогда стоит использовать паттерн Observer, т.е.
в процессе обработки должны создаваться разные типы события а остальные модули должны на них подписываться и обрабатывать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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