#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 и тд. Много проектов, где шли коротким путем как хотите вы, в живых осталоись немногие, ведь вы уже пошли дальше, а вот коллеги про тот капкан узнают уже поздно.)
Комментариев нет:
Отправить комментарий