Size: a a a

Android Architecture

2020 September 16

Kd

Konstantin dmz9 in Android Architecture
Quantum Harmonizer
кто-нибудь уже придумал абстракцию, чтобы держать адаптер и декор вместе?)
onAttachToWindow ченить такое, не?
источник

Kd

Konstantin dmz9 in Android Architecture
в самом адаптере
источник

АП

Анатолий Петров... in Android Architecture
Всем привет. Подскажите пожалуйста, на какие модули следует разделить приложение, чтобы добиться clean architecture.

Модули на фичи делать не собираюсь..

Пока вижу следующие модули
app
common
domain
repository
источник

АП

Анатолий Петров... in Android Architecture
Наверное лучше data, а не repository
источник

АЕ

Алексей Ершов... in Android Architecture
Можно и вообще без модулей добиться
источник

АП

Анатолий Петров... in Android Architecture
Но в некоторых проектах встречал модуль и data и repository
источник

АП

Анатолий Петров... in Android Architecture
Алексей Ершов
Можно и вообще без модулей добиться
Хотелось бы с модулями
источник

АП

Анатолий Петров... in Android Architecture
И если у кого-нибудь пример на github, я был бы очень благодарен за ссылку
источник

АЕ

Алексей Ершов... in Android Architecture
По чатику поищите тоже, накидывали уже ссылок
источник

АП

Анатолий Петров... in Android Architecture
Спасибо, буду искать
источник

GK

Gen K in Android Architecture
Анатолий Петров
Всем привет. Подскажите пожалуйста, на какие модули следует разделить приложение, чтобы добиться clean architecture.

Модули на фичи делать не собираюсь..

Пока вижу следующие модули
app
common
domain
repository
app (presenters impl, interactors)
domain (models, usecases, repository interfaces, presenter interfaces)
repository (repositories impls, local storages interfaces, remote storages interfaces)
local (local storages impls)
remote (server api, remote storages impls)
источник

АП

Анатолий Петров... in Android Architecture
Gen K
app (presenters impl, interactors)
domain (models, usecases, repository interfaces, presenter interfaces)
repository (repositories impls, local storages interfaces, remote storages interfaces)
local (local storages impls)
remote (server api, remote storages impls)
👍
источник

АП

Анатолий Петров... in Android Architecture
Спасибо
источник

АП

Анатолий Петров... in Android Architecture
Можете пояснить назначение интеракторов?
источник

АП

Анатолий Петров... in Android Architecture
Чем они отличаются от usecase?
источник

АП

Анатолий Петров... in Android Architecture
Gen K
app (presenters impl, interactors)
domain (models, usecases, repository interfaces, presenter interfaces)
repository (repositories impls, local storages interfaces, remote storages interfaces)
local (local storages impls)
remote (server api, remote storages impls)
А local и remote это отдельные уровни?
источник

АП

Анатолий Петров... in Android Architecture
Gen K
app (presenters impl, interactors)
domain (models, usecases, repository interfaces, presenter interfaces)
repository (repositories impls, local storages interfaces, remote storages interfaces)
local (local storages impls)
remote (server api, remote storages impls)
Реализация репозитория должна быть в модуле domain? А модели в domain это модели, которые будут выводиться в ui?
источник

GK

Gen K in Android Architecture
Я usecase делаю "плоскими", без асинхронщины. Такие классы много легче писать по TDD, да и просто покрывать тестами. Интерактор - это по факту фасад над usecase, который берет на себя асинхронщину. Это его единственная ответственность.

Репозиторий - это гейт между бэком, локальным хранилищем и ядром (domain). UseCase обращается к repository, не задумываясь о том, откуда/куда брать/отдавать данные. Соответственно в слое domain у тебя интерфейс репозитория. Реализация репозитория - в слое репозиториев.

Репозиторий разруливает потоки данных. Если нет данных, обращается к интерфейсу remote storage. Если нужно кэшировать, сохраняет полученные с бэка в локальное хранилище (через интерфейсы локальных хранилищ). Если данные уже есть в локальном хранилище, берет их оттуда через интерфейсы локальных хранилищ. Соответственно в слое репозиториев нужно знать интерфейсы локальных и удаленных хранилищ.  А вот их реализации создаются в слоях local и remote.

Что это дает? Если к примеру решили перейти на другую БД, переписывание модуля local не затронет модули remote и repository. Соответственно компилятору нет нужды перекомпилировать остальные модули.
источник

AT

Alexander Taran in Android Architecture
Анатолий Петров
Чем они отличаются от usecase?
https://telegra.ph/Android-Architecture-06-02
здесь есть ответы на все ваши вопросы
источник

А

Архитектор in Android Architecture
Анатолий Петров
Хотелось бы с модулями
"Хотелось бы" без практического опыта звучит как-то странно
источник