Articles

MVP padrão arquitetônico

neste artigo, vamos descobrir algo sobre o padrão MVP, ele é herdado do padrão MVC. Mas definitivamente, ele tem algumas mudanças quando comparado com o padrão MVC. Então, vamos entender como usá-lo, como diferenciar entre padrão MVC e padrão MVP.vamos começar.

  • Análise do Problema
  • Definição do Padrão MVP
  • Quando usar o
  • Benefícios & Desvantagem
  • Quebra automática

Análise do Problema

O cuidado que nasceu padrão MVP é como mesmo com o padrão MVC. Mas MVP é usado para evitar alguns inconvenientes do padrão MVC, tais como:

  • no padrão MVC, a visão e o modelo podem interagir uns com os outros. Então, normalmente validamos dados do modelo ou usamos lógica de dados em vista. Então, torna os testes de unidade automatizados difíceis.é relevante para a garantia.

Definição do Padrão MVVM

de Acordo com wikipedia.com, temos a definição do padrão MVP:

MVP pattern is a derivation of the Model-View-Controller (MVC) architectural pattern, and is used mostly for building user interfaces.In MVP, the presenter assumes the functionality of the middle-man.In MVP, all presetation logic is pushed to the presenter.

E o padrão MVP teve origem no início da década de 1990 em Taligent, uma joint venture da Apple, IBM, e Hewlett-Packard.

abaixo está o conteúdo de cada parte no padrão MVP.

  • o modelo tem entidades e serviços.

    Entities is used to contain data that is mapping with table in database for utilizing some other reasons.

    serviços, podem ser usados padrão DAO, ou padrão de repositório, São camada fina entre a camada de aplicação e camada de acesso de dados. Eles normalmente gerem operações CRUD com banco de dados em local ou remoto.

  • A Vista tem responsabilidades que interagem com os utilizadores.

    não contém qualquer lógica. Ele irá encaminhar as entradas e comandos do Usuário (eventos) para o apresentador.

    a vista geralmente tem uma referência ao seu apresentador.

  • o apresentador é a parte intermédia entre a visão e o modelo. Ele vai desempenhar o mesmo papel que o controlador no padrão MVC.

    toda lógica de negócios, lógica de dados, validar entrada, recebe eventos de vistas, converte dados de vista para modelo ou de modelo para vista é implementado no Presenter.

    quando comparado com a vista e controlador no padrão MVC, a vista e apresentador presente no padrão MVP são totalmente dissociados uns dos outros e eles se comunicam por meio de uma interface. (O Apresentador interage com os pontos de Vista através de interface de Exibição, isso significa que o Apresentador pode executar todas apresentação e tarefas de navegação, sem qualquer dependência do real tecnologia de INTERFACE do usuário que está sendo usada)

    E temos o diagrama de seqüência do padrão MVP:

Quando usar o

  • a Nossa tela de bi-directional-flow, significa que as interações do usuário precisa solicitar algo de nosso Modelo, e o resultado deste pedido afetará o modo de Exibição.

  • a vista afectada pelas actualizações do modelo é muito limitada.

  • MVP padrão não é usado em um caso em que a IU é atualizada sem interações do usuário, como atualizar UI quando um evento acontece no modelo, esta abordagem é mais perto de MVVM do que MVP.

benefícios Drawback

  1. benefícios
    • A vista não interage directamente com o modelo. Isso isola a implementação da View bettern do que em MVC e permite testes de unidade automatizados mais fáceis do apresentador e modelo.

    • a capacidade de mudar a IU da Web para a janela ou móvel é muito fácil.

    • Baixo maintaince custo

  2. Inconvenientes
    • O Apresentador tende a expandir-se para uma enorme onisciente classe, se não formos cuidadosos o suficiente e não quebrar nosso código de acordo com o Único Princípio de Responsabilidade.

    • complexidade aumentada.curva de aprendizagem Extra.

Alguns padrões que são relevantes para o padrão MVP

  • Application Controller – Se apresentadores interagem com um aplicativo controlador, os apresentadores não precisa página de fluxo e a navegação na tela lógica. Isso torna mais fácil atualizar o fluxo de página.

  • Observer pattern

Quebra automática

  • O usuário final interage apenas com a Vista.

  • uma vista é mapeada apenas para um apresentador.

  • View references Presenter but it has no reference to Model. E o apresentador também está ciente da visão que lhe está associada.

  • os padrões facilitam a comunicação entre a vista e o apresentador.

  • Existem duas outras implementações do padrão MVP, como visão passiva e controlador de Supervisão.

    • a visão passiva é completamente controlada pelo apresentador. Ao implementar a visão passiva MVP, é muito mais fácil lidar com a concorrência e multithreading.

    • na supervisão do apresentador, a vista interage diretamente com o modelo para realizar qualquer ligação de dados simples que possa ser declarativamente definida, sem o apresentador. O apresentador atualiza o modelo. Ele só muda o estado da vista quando a lógica UI complexa que não pode ser declarativamente especificada é necessária.

    • Compare com outras variações de MVP, tais como visão passiva, o padrão de apresentação Supervisor torna o código mais simples uma prioridade maior do que a testabilidade completa. O padrão Supervisor do apresentador requer menos código do que outros padrões MVP porque ele usa a ligação de dados. O código é mais fácil de manter porque as simples alterações UI não requerem alterações de código no apresentador para atualizar a vista.

Consulte:

https://www.linkedin.com/pulse/mvp-architecture-pattern-small-article-khaled-kassem/

Book Architectural Patterns_ Uncover essential patterns in the most indispensable realm of enterprise architecture

https://www.oreilly.com/library/view/architectural-patterns/9781787287495/38abcb95-0392-4127-a3fa-b80ac2807aa9.xhtml

The other idea about Presenter in MVP pattern and Controller in MVC pattern

http://hannesdorfmann.com/mosby/mvp/

Choose MVP pattern over MVC pattern

Why Do You Need to Choose MVP Over MVC Android Architectural Pattern?

Examples for MVP pattern

http://aviadezra.blogspot.com/2008/10/model-view-presenter-design-pattern.html

https://www.raywenderlich.com/7026-getting-started-with-mvp-model-view-presenter-on-android

https://www.linkedin.com/pulse/when-use-mvc-mvp-mvvm-nothing-ahmed-adel/

A Model View Presenter (MVP) implementation with ASP.NET

A brief introduction to a cleaner Android architecture: The MVP pattern

https://docs.microsoft.com/en-us/previous-versions/msp-n-p/ff649571(v=pandp.10)