ext; FONT-FAMILY: Verdana; mso-ansi-language: PT-BR; mso-bidi-font-family: Arial">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: }
30: ...