Здравствуйте, изучаю архитектуру приложений MVP и вроде понимаю ее суть. Читал различные рекомендации по реализации, что у каждого View рекомендуется делать свой Presenter. В Model я понял, что она отделена и данные возвращает через callback.
Но я не понимаю тонкостей проектирования Model.
Предположим есть простое приложение - администратор магазина. Есть несколько таблиц в БД: "товар", "клиенты", "покупки". К каждому списку реализуется свой View + Presenter. Как быть с Model? она выступает как одна на все 3 таблицы; идет 1к1 (1 таблица - 1 Model); или 1 - клиенты, 2 - товар, 3 - смежная с первыми двумя?
И как реализуется тогда интерфейсы Model в Presenter'ах?
Model - уровень, который предоставляет данные
Как вариант, для каждого user case можно использовать свой уровень бизнес логики. Презентер, допустим, экрана со списком клиентов обращается к интерфейсу interactor-а или класса, который инкапсулирует получение списка клиентов (Repository)
ClientsPresenter <-> ClientsRepository <-> Db
PurchasesPresenter <-> PurchasesInteractor <-> PurchasesRepository <-> Db
Презентер знает об интеракторе/repository и получает данные с помощью реализации колбеков или, например, используя RxJava.