Loading AI tools
Da Wikipédia, a enciclopédia livre
Model–view–presenter (MVP) é uma derivação do padrão de software model-view-controller (MVC), usado também para construir principalmente interfaces gráficas.
Em MVP a camada Presenter assume a função de mediadora (executada pelo Controller em MVC). Além disso, a View é responsável por manipular os eventos UI (como mouseDown, keyDown, etc.), que era o trabalho da Controller. Finalmente, a Model se torna estritamente um modelo de domínio.
MVP é um padrão de desenho de interface de usuário projetado para facilitar os testes unitários automatizados e melhorar a separação de interesses em lógica de apresentação:
Normalmente, a implementação da View instancia o objeto Presenter concretamente, provendo uma referência a si mesmo. O código em C# a seguir demonstra um construtor View simples, onde ConcreteDomainPresenter
implementa a interface IDomainPresenter
:
public class DomainView: IDomainView
{
private IDomainPresenter domainPresenter;
public DomainView() // Construtor
{
this.domainPresenter = new ConcreteDomainPresenter(this);
}
}
O grau de lógica permitido na View varia entre implementações diferentes.
Como extremo, a View é completamente passiva, encaminhando todas operações de interação à interface presenter. Dessa forma, quando um usuário dispara um evento na view, ele não faz nada, mas invoca o método da Presenter o qual não tem parâmetros e não retorna valor. A interface Presenter então recupera os dados da View através dos métodos definidos pela interface View. Finalmente, a presenter então opera na interface model e atualiza a View com os resultados na operação.
Outras versões de model-view-presenter permitem certa liberdade em relação à classe que manipula uma interação, evento ou comando particular. Isto é normalmente mais adequado para arquiteturas baseadas na web, onde a View, a qual executa no browser do cliente, pode ser melhor colocada para manipular interação ou comando.
Do ponto de vista de camada, a classe Presenter pode ser considerada como pertencendo à camada de aplicação em um sistema de arquitetura multicamada com camadas comuns, mas ela também pode ser vista como uma camada Presenter de si mesma entre a camada de aplicação e a camada de interface do usuário.
O padrão de software Model-View-Presenter surgiu no início dos anos 90 na Taligent - uma joint venture da Apple, IBM e HP, e era o modelo de programação básico para desenvolvimento de aplicação no ambiente comum baseado em C++ na Taligent. O padrão foi depois migrado pela Taligent para Java e popularizado em um artigo pela Taligent CTO Mike Potel.[1] Depois a falência da Taligent em 1997, Andy Bower e Blair McGlashan do Dolphin Smalltalk adaptaram o padrão MVP para formar a base para seu framework de interface de usuário Smalltalk.[2] Em 2006, a Microsoft começou a incorporar o MVP em suas documentações e exemplos para a programação de interface de usuário no .NET framework.[3] As evoluções e múltiplas variações do padrão MVP, incluindo o relacionamento do MVP com outros padrões de desenho como o MVC, foram analisados detalhadamente em artigos por Martin Fowler[4] e Derek Greer.[5]
O ambiente .NET suporta o padrão MVP como qualquer outro ambiente de desenvolvimento. A mesma classe Model e Presenter pode ser usada para suportar múltiplas interfaces, como uma aplicação Web ASP.NET, uma aplicação Windows Forms, ou uma aplicação Silverlight. A camada Presenter obtém e envia informação de/para a View através de uma interface que pode ser acessada pelo componente de interface (View).
Além de implementar manualmente o padrão, um framework de Model-View-Presenter pode ser usado para dar suporte ao padrão MVP de uma forma mais automatizada. A seguir, uma lista desses frameworks sob a plataforma .NET.
Em uma aplicação Java (AWT/Swing/SWT), o padrão MVP pode ser usado permitindo que uma classe de interface de usuário implemente uma interface View.
A mesma abordagem pode ser usada para aplicações Java baseadas na web desde que frameworks web Java baseados em componentes permitem desenvolvimento lógico do lado cliente usando a mesma abordagem de componente como clientes familiares.
Implementar MVP no Google Web Toolkit exige apenas que algum componente implemente a interface view. A mesma abordagem é possível usando o frameword para web Echo2.
MVP pode ser implementado em aplicações Java SE (Swing and AWT) usando o framework Biscotti.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.