Я пытаюсь сделать дизайн на основе Uncle Bob Clean Architecture в Android.
Эта проблема:
Я хотел бы решить, как сделать так, чтобы изменения, сгенерированные в одном репозитории, отражались в других частях приложения, например в других репозиториях или представлениях.
Пример
Я разработал ОЧЕНЬ упрощенный пример для этого примера. Обратите внимание, что граничные интерфейсы были удалены, чтобы сохранить небольшие диаграммы.
Представьте себе приложение, которое показывает список видео (с заголовком, номером и т.д.), Щелкая видео, чтобы увидеть детали (там вы можете полюбить/не полюбить видео).
Кроме того, в приложении есть система статистики, которая подсчитывает количество видео, которые понравились или не понравились пользователю.
Основными классами для этого приложения могут быть:
Цель
Теперь представьте, что вы проверяете свою статистику, затем перемещаетесь по списку видео, открываете детали одного и нажимаете кнопку "Нравится".
После того, как подобное отправлено на сервер, есть несколько элементов приложений, которые должны знать об изменении:
- Конечно, подробный вид должен быть обновлен с изменениями (это может быть сделано с помощью обратных вызовов, так что нет проблем)
- Список видео должен обновлять количество лайков для данного видео.
-
StatsRepository
может захотеть обновить/аннулировать кэши после голосования нового видео - Если список статистики виден (представьте разделенный экран), он также должен показать обновленную статистику (или, по крайней мере, получить событие для повторного запроса данных)
Вопрос
Каковы общие шаблоны для решения этого вида общения? Пожалуйста, сделайте ответ как можно более полным, указав, где генерируются события, как они распространяются через приложение и т.д.
Примечание: награды будут предоставлены для полных ответов