Демо-репозиторий к лекции по чистой архитектуре. Все изменения в репозитории сделаны отдельными коммитами, чтобы можно было следить за изменениями в проекте.
В рамках проекта мы проводим рефакторинг приложения от монолитного, к использованию разделения на слои чистой архитектуры и модули.
В качестве пользы подхода, иллюстрируем создание вариантов сборки приложения с разным составом модулей и функциональностью.
В нашем примере, мы использовали варианты сборки приложения для подключения разных источников данных. Для самостоятельного изучения, предлагаю вам провести дополнительный рефакторинг, имитирующий варианты приложения для разных рынков и экосистем. Представим, что нам нужно выпустить приложение:
- для американского рынка на платформе Google Play
- для китайского рынка на платформе Huawei
Чтобы сделать это, нам необходимо абстрагировать наш провайдер геоданных от используемой платформы.
- Создайте два новых библиотечных модуля приложения:
location.googleиlocation.huawei. - В каждом из модулей напишите реализацию, имитирующую получение координат по примеру LocationProviderImpl.
- Создайте Hilt-модуль, предоставляющий реализацию в граф для каждого модуля
location. - Дополните конфигурацию модуля
appвариантами сборки по новой осиplatform. - Опробуйте работу модулей в каждой конфигурации.
Готовое решение доступно в отдельной ветке