Проблемы с определением шаблона MVP для приложений Android - PullRequest
4 голосов
/ 23 февраля 2012

Я разрабатывал для Android в течение последних нескольких месяцев, я узнал несколько вещей, но я думаю, что пришло время начать делать это правильно, поэтому я пытаюсь реализовать шаблон MVP / MVC, которыев этом случае наиболее подходящие шаблоны для работы с пользовательским интерфейсом.

Я прочитал много веток и примеров, но у меня все еще есть некоторые сомнения, вероятно, из-за моего отсутствия опыта работы с Android.

Некоторые авторыопределяет Деятельности как презентаторов / контроллеров, а некоторые другие как представления. Я думаю, что действия должны работать как выступающие, а не как представления, для своих естественных возможностей сохранения состояния и представления макета пользователю, возможно, я ошибаюсь, и я надеюсь,кто-то может уточнить это.

Если я прав, то в Views должны быть разные классы, которые используют макет и события привязки для связи с докладчиком (мероприятие), вот где я теряюсь ...

Я не смог найти способ правильно создать класс, который выходит из вида и использует макет для привязки событий иУмею общаться с докладчиком.Единственный способ сделать это - использовать объект Builder, который создает представление через инфлятор и связывает события.Это работает, но представление не реализует никакого интерфейса, который разрушает мой шаблон MVP.

Другой способ, которым я думаю, заключается в использовании View в качестве Proxies для объекта представления Android, но я не уверенесли это лучший способ справиться с этим ...

Я был бы очень признателен, если бы кто-нибудь указал мне правильное направление.

Спасибо и простите за длинный пост!

Ответы [ 2 ]

3 голосов
/ 23 февраля 2012

У меня есть некоторый опыт работы с MVC в других контекстах, и после того, как я довольно много разработал для Android, я бы сказал, что это совсем не просто.

Вы, вероятно, в конечном итоге смешаете код контроллера и вид в действии. Да, это должен быть Контроллер, но он много работает с пользовательским взаимодействием, для меню, диалогов и т. Д. И от этого нелегко.

Я думаю, что разработка Android следует другой парадигме, которая напоминает мне о Django и о том, что они называют MVT, Model-View-Template.

Так что я бы посоветовал не пытаться строго придерживаться MVC на Android. Код View и Controller может смешиваться, но ваш код можно поддерживать с помощью модульного подхода. Пользовательские представления или другие специальные классы могут очень помочь в этом отношении.

И вы сэкономите много времени, следуя естественной логике фреймворка, вместо того, чтобы искать академический MVC, на мой взгляд.

1 голос
/ 23 февраля 2012

Если вы не против спагетти-кода и, возможно, утечки памяти.Вы можете сделать что-то вроде привязки одного базового макета / вида к действию.Затем загрузите ваш предпочтительный вид в макет.Затем этот пользовательский класс View будет принимать Activity в себя, чтобы он мог возвращаться к действию, вызывающему его, и связываться с ним.Когда вы захотите переключить вид, вы просто замените текущий вид на другой.

Принцип тот же, что и во фрагменте, но мой путь просто кучи.

ИтакВо-первых, я придерживаюсь API & Fragment.Он достаточно близок для своего рода структуры MVC, сохраняя при этом аккуратность.

Вы можете попробовать мой путь, но это хороший опыт, так как он может многому научить вас, чего не следует делать.Также такие вещи, как Map, не будут работать и на виде, на случай, если вы еще не поняли:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...