Model View Presenter Pattern

Comprei uma revista Mundo Java (Edição 26 – SOA na Prática) para dar uma olhada nos artigos sobre SOA. Acabei topando com o artigo Testes de Unidade para Camadas de Apresentação no Mundo Real sobre o pattern Model View Presenter.

No artigo os autores mostram como o pattern viabiliza os testes envolvendo a interface do usuário. O conceito de que o que não pode ser testado com facilidade, como é o caso das interfaces do usuário, deve ser magro (desprovido ao máximo de lógica) é aplicado quando a View fica bem magra e a lógica que é normalmente colocada lá, como, por exemplo, para fazer o intertravamento entre campos preenchidos e habilitação de botões, é transferida para o Presenter. O fato é que as regras de negócio acabam “contaminando” a lógica que é colocada na View prejudicando a separação procurada no pattern Model View Controller. No artigo é mostrada a vantagem do pattern MVP na articulação dos testes por permitir mocks para a View e o Model já que os mesmos são representados por interfaces e não por implementações.

No pattern MVP o Presenter “conhece” a View e o Model mas estes não o “conhecem” e a comunicação com o Presenter é via notificações. Martins Fowler no seu artigo sobre GUIs analisa vários patterns e referencia o artigo ‘TwistingThe Triad‘ dos desenvolvedores do Dolphin Smalltalk (Que, infelizmente, está sendo descontinuado: Dolphin Smalltalk Discontinued) sobre o pattern MVP. Há também um split de Fowler em relação ao artigo inicial onde o pattern MVP é dividido em duas partes. Uma abordagem de desenvolvimento, Presenter First, é completamente baseada em MVP, testes de unidade e estórias do usuário.

Em Twisting the MVP (Model View Presenter) triad o Controller retorna para intergir com a View, sob o comando do Presenter, quando o Model não está envolvido.

Em Model-View-Presenter Framework uma análise detalhada é feita com exemplos em Smalltalk.

Em Apresentando Model-View-Presenter, o MVC focado na visualização os mais afeitos ao código em Java podem encontrar uma boa explanação.

O pattern Naked Objects também rompe com o MVC de uma forma interessante. Aqui há também uma interessante discussão a respeito.

Um comentário

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s