A grosso modo podemos dizer que o padrão Model-View-Presenter (MVP) procura dividir as responsabilidades entres as diferentes partes da aplicação, a fim de que estas possam trabalham de forma eficiente estando juntas ou não. Isto é bom porque aumenta a coesão e testabilidade das nossas aplicações!
Como estamos apenas na primeira parte, não aprofundaremos muito o conceito. Por enquanto basta sabermos que:
- No Model estão contidas as informações e estados das entidades de negócio nossa aplicação. Exemplos: Pessoa, Conta bancária, …
- Na extremidade oposta temos a View, elemento responsável pela entrada e saída de dados da aplicação. Uma view pode ser uma página ASP.NET, um Windows Form ou até mesmo uma simples classe que carrega dados de outra aplicação.
- Entre estes dois elementos existe o Presenter, que relaciona e comunica estas duas partes a fim de que uma não dependa da outra. Graças ao presenter também é possível disponbilizar mais de uma View para o mesmo Model.
Metendo a mão na massa
Iniciaremos criando um novo ASP.NET Web Site com nome de “WebSiteMVP” e adicionando a pasta App_Code através do Solution Explorer.
É necessário que todas Views implementem uma interface comum responsável pela troca das informações com o presenter. Esta interface possibilita que o mesmo presenter se comunique com views de tipos diferenets: Web User Controls, Web Forms, Windows Forms, …
Dentro de App_Code criaremos uma interface ILogin conforme o código abaixo:
using System;
public interface ILogin
{
String Usuario { get; set; }
String Senha { get; set; }
}
Em Default.aspx adicionaremos um botão de Login e dois TextBox: um para usuário e outra para senha. Depois disto iremos para o code-behind, pois precisamos que nosta página implemente a interface ILogin, conforme código abaixo:
public partial class _Default : System.Web.UI.Page, ILogin
{
protected void Page_Load(object sender, EventArgs e)
{
}
#region ILogin Members
public string Usuario
{
get { return txtLogin.Text; }
set { txtLogin.Text = value; }
}
public string Senha
{
get { return txtSenha.Text; }
set { txtSenha.Text = value;
}
#endregion
}
Bem, nesta primeira parte apenas criamos o início do elemento View. Ainda precisamos fazê-lo conversar com o presenter, para que este retorne as informações do model… Mas com isto que construímos já é possível deduzir que quando o presenter setar o Usuario na página o valor será enviado diretamente para o TextBox!
public void OnViewLoad()
{
this.View.Usuario = "Thiago";
}
Parece bom?
Então continue acompanhando.
Atualizado (15/08/2007): Troquei as imagens dos códigos por textos.
2 Trackbacks
[...] 1ª parte deste tutorial criamos uma Web Application ASP.NET e construímos uma View para Login. Nossa view [...]
[...] vez um amigo meu fez um post sobre MVP com C# com .net (parte 1 e parte 2) eu quando li o post dele fiquei pensando como seria em PHP, eu mesmo como estou no [...]