Страницы

Поиск по вопросам

суббота, 11 января 2020 г.

Как общаться с PreferenceHelper минуя DataManager в MVP?

#android #mvp


Использую шаблон проектирования MVP. Для наглядности приложу картинку:



Очень часто нужно просто записать данные в PreferenceHelper из презентера, но нужно
это делать через DataManager. Приходиться дублировать методы из PreferenceHelper в
DataManager. Можно ли этого избежать? (Наследование явно не предлагать) Общаться на
прямую с PreferenceHelper думаю не правильно.

PS
Делать например метод:

fun getData(dataKey: String, datatype: T) : T {}


считаю не вариант, так можно перепутать с типом, и получить краш в одном из сценариев.
    


Ответы

Ответ 1



Можно, но не нужно. "Расставляя капканы" SharedPreferences, это источник данных как и БД. У вас на схеме всё верно. Если вы PreferencesHelper положите в Presenter(или View), data слой (MODEL) не узнает, вы срежете угол, а там капкан. "Почему это плохо? ведь я его вижу и не попался?" Если завтра вы из префов забираете данные, но захотели и кешировать или писать БД, или необходимо с какими-то данными выйти в сеть - мы нарушаем singleResponsibility и архитектура начнет понемногу шататься. Вам придется еще больше дублировать методы и думать почему в 2 (или более) местах имеем доступ к тому же самому классу, а так DataManager (Repository) разобрался бы какие данные отдавать, кешировать, преобразовать для presentation layer. В целом это довольно частый вопрос в Android архитектуре и permissions, bundle, uri, states, services и тд. Много проектов, где шли коротким путем как хотите вы, в живых осталоись немногие, ведь вы уже пошли дальше, а вот коллеги про тот капкан узнают уже поздно.)

Комментариев нет:

Отправить комментарий