Model-View-Presenter (Parte I)

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.

Bookmark the permalink. Follow any comments here with the RSS feed for this post. Post a comment or leave a trackback: Trackback URL.

One Comment

  1. tarcisio
    Posted 19 de janeiro de 2010 at 7:50 | Permalink

    Muito bom esse post.
    Vou ler o resto. Agradavel. É bom para quem quer aprender sobre MVP. Eu estou muito interessado.

2 Trackbacks

  1. By Thiago Bohn - » Model-View-Presenter (Parte II) on 15 de agosto de 2007 at 14:55

    [...] 1ª parte deste tutorial criamos uma Web Application ASP.NET e construímos uma View para Login. Nossa view [...]

  2. [...] 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 [...]

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*