Artigo .net Magazine 55 - Aplicando Padrões de Projeto na prática - Parte 2

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (1)  (0)

Este artigo tem como finalidade dar continuidade à demonstração de como criar uma aplicação real utilizando padrões de projetos.

Esse artigo faz parte da revista .NET Magazine edição 55. Clique aqui para ler todos os artigos desta edição

Boas práticas

Aplicando Padrões de Projeto na prática – Parte 2

Aplicando os padrões Singleton, DAO, Façade, Command e a Técnica Simple Factory a uma aplicação OO

 

Neste artigo veremos

·         Aplicação dos Padrões de Projeto Singleton, DAO, Façade, Command e da Técnica Simple Factory

Qual a finalidade

·         Dar continuidade à demonstração de como criar uma aplicação real utilizando padrões de projetos.

Quais situações utilizam esses recursos?

·         Projetos que tenham foco em melhores práticas como reusabilidade, coesão e facilidade de manutenção terão benefícios com o conteúdo deste artigo.

 

Resumo do DevMan

Este artigo é uma continuação do artigo da edição anterior, apresentando os padrões Command, Façade e a técnica Simple Factory. O padrão Command separa o cliente que faz uma requisição de uma operação do objeto que processará essa requisição. O padrão Façade permite a criação de um controlador único, facilitando a manutenção do sistema. A técnica Simple Factory facilita a tarefa de controlar a instanciação de objetos.

 

Na parte 1 deste artigo, foram apresentados os padrões Singleton, DAO e MVC. Neste artigo, serão abordados os padrões Façade, Command e a Técnica Simple Factory. Os padrões implementados nesse artigo deverão ser aplicados diretamente ao projeto criado no artigo anterior.

 

O Padrão Façade

Apesar das vantagens da utilização do padrão MVC, discutidas no artigo anterior, em um sistema maior, o fato de existirem vários controladores pode dificultar sua manutenção. Através do padrão Façade, pode-se criar um controlador único, o que facilitará a implementação das visões por fornecer uma interface única para as requisições. Como o código do controlador fica centralizado, a manutenção do código é facilitada, assim como futuras implementações de novos requisitos. Um padrão Façade, com função semelhante a que será implementada nesse artigo, encontra-se na Figura 1, onde páginas Web postam seu conteúdo para um controlador único que implementa o padrão Façade. Quando o controlador único recebe a requisição, através de um parâmetro passado pela página, ele realiza o tratamento da informação, acessando as classes do modelo desejadas.

 

Figura 1. Exemplo do padrão Façade

 

Quando um usuário faz uma requisição HTTP, a requisição é processada pela página através de um handler. Para criar um handler personalizado deve-se criar uma classe que implementa a interface IHttpHandler. O controlador único do sistema Contatos será criado utilizando um handler personalizado e mapeando, através do arquivo web.config, todas as requisições para esse controlador. Para criar o controlador único, adicione uma nova classe na pasta Controller, chamada Handler. O código da classe Handler segue na Listagem 1.

As classes ConsultarContatoController e IncluirContatoController deverão ser excluídas do projeto pois não são mais necessárias.

 

Listagem 1. Classe Handler

 

01: using System;

02: using System.Data;

03: using System.Configuration;

04: using System.Web;

05: using System.Web.Security;

06: using System.Web.UI;

07: using System.Web.UI.WebControls;

08: using System.Web.UI.WebControls.WebParts;

09: using System.Web.UI.HtmlControls;

10: using System.Web.SessionState;

11: using PadroesVs1.Persistence;

12: using PadroesVs1.Model;

13:

14: namespace PadroesVs1.Controller

15: {

16:     public class Handler : IHttpHandler

17:     {

18:         public void ProcessRequest(HttpContext context)

19:         {

20:             switch (context.Request.Params["acao"])

21:             {

22:                 case "IncluirContato":

23:

24:                     try

25:                     {

26:                         ContatoDAO dao = ContatoDAO.GetInstance();

27:                         dao.Save(new Contato(context.Request.Params["nome"],

28:                                           context.Request.Params["email"]));

29:                     }

"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?