Como separar o View e o Presenter no Android, enquanto as reações nas ações do usuário (parte do Presenter do MVP) são definidas nas mesmas atividades que mostram os elementos da GUI (View parte of MVP).
"No apresentador de visualização de modelos, como Martin Fowler ou Michael Feathers [2] dizem, a lógica da interface do usuário é separada em uma classe chamada apresentador, que lida com toda a entrada do usuário e informa à visualização" burra "o que e quando display "(citado a partir daqui ).
Até agora, pensei que uma das principais características do Android é a Atividade inteligente que executa ações, reage a elas e mostra os resultados. O esquema MVP está em contradição com a filosofia do Android? Tem sentido tentar realizá-lo no Android? Se sim, como isso poderia ser feito?
programmers
perguntas há uma questão mais controversa "o que você acha ../é bom ou ruim para ...", enquantostackoverflow
seria mais parecido com "Existem exemplos de mvp no android". Para mim, ambos os lugares estão ok.Respostas:
Os aplicativos Android são basicamente construídos em torno do Model-View-Controller (MVC) - o MVP parece a mesma coisa, embora eu nunca tenha ouvido o termo antes. As atividades desempenham o papel de Controller, as exibições XML são apenas isso (embora você possa construí-las programaticamente na Activity - é apenas mais fácil e mais simples fazê-lo em XML) e o modelo que você escreve. Então, sim, esse modelo é bastante prático.
Um possível motivo para você não ter ouvido falar muito sobre esse modelo de design é que a estrutura do Android obriga a separar a visualização. Como o aplicativo em dispositivos móveis costuma ser pequeno, as pessoas não costumam usar o MVC completo; eles tendem para as camadas de visualização e ação, nas quais a camada de ação executa grande parte do trabalho (pequeno) do modelo.
Se você estiver escrevendo um aplicativo de plataforma cruzada, convém observar uma abordagem em quatro camadas: Visualização, Ação, Lógica de negócios e Modelo. As camadas View e Action seriam específicas da plataforma, enquanto a lógica e o modelo de negócios não seriam alterados. Basicamente, você divide a interação do apresentador e do usuário na camada Ação, que chama a camada Lógica Comercial para executar a ação que o usuário deseja.
fonte
Action
plataforma da camada (= Presentation) independente também - pelo menos quando suas plataformas diferentes oferecem recursos semelhantes de interface do usuário.Não tenho experiência em programação para Android, mas, olhando rapidamente alguns tutoriais introdutórios de programação para Android, não vejo uma razão pela qual o MVP seja menos útil como em qualquer outra estrutura orientada a eventos. A
Activity
classe não é muito diferente daDialog
ouForm
em outras estruturas, portanto, deve ser fácil criar uma classe "Activitity Presenter" para qualquer subclasse Activity do seu aplicativo e colocar a lógica principal lá.Os eventos enviados para a sua "Atividade" devem ser delegados ao apresentador e, se o apresentador enviar eventos por conta própria ou chamar outros recursos dependentes do sistema, a Atividade deverá fornecer funções relacionadas por meio da interface que ele compartilha com o apresentador. Mas isso é basicamente o mesmo que em qualquer outra estrutura GUI que eu conheça.
fonte
O MVP é definitivamente útil para o Android. Ajuda a organizar e testar seu código de unidade. E a melhor parte é que novas pessoas que leem seu código poderão entender o código e começarão a contribuir assim que souberem o que deve ir aonde. Aqui está um link muito útil para entender o MVP com exemplos .
Aqui está uma breve explicação de todos os três componentes do MVP
Visão
No MVP do Android, uma exibição contém duas coisas: Activity - recurso Android View - interface java Activity Implementa a View e ela se injeta (interface View) no apresentador para que o apresentador possa conversar com a atividade usando a interface view. Os três primeiros blocos do diagrama mostram a comunicação entre o View e o Presenter.
Apresentador
O Presenter atua como uma camada intermediária entre View e Data / Model. O View (Activity) comanda o apresentador para apresentar algo e o apresentador pega os dados do banco de dados / Modelo e devolve a forma apresentável dos dados para o View. O View cuida da exibição desses dados na tela. E lembre-se de que o Presenter é uma classe java simples, não deve incluir nenhum dos componentes do Android, caso contrário, tornará difícil o teste de unidade do apresentador.
Se você deseja usar o banco de dados no apresentador, faça com que a atividade crie uma instância de banco de dados e injete-a no apresentador. Isso ajudará você a zombar do banco de dados durante o teste de unidade e permitirá testar a lógica de negócios.
Modelo
O modelo no MVP nada mais é que a sua fonte de dados. O View não fala diretamente com os dados, em vez disso, comanda o Presenter para manipular os dados e devolver as informações que podem ser exibidas sem nenhuma modificação adicional.
fonte