Design Pattern é uma forma padrão de organizar classes e objetos, nomes para soluções que você já modelou, uma forma de compartilhar conhecimentos sobre POO, soluções de POO para problemas que incidem em diversos cenários de desenvolvimento, etc.
Quando adotamos o uso de Design Patterns seu código fica mais organizado, aumenta a qualidade, menor complexidade, aumenta a comunicação dentro da equipe de desenvolvimento, etc.
A definição de um pattern pode conter:
• O nome: identifica o padrão;
• O problema: explica o problema e o seu contexto;
• O problema: explica o problema e o seu contexto;
• A solução: descreve a maneira de melhorar o desenvolvimento, relacionamentos, responsabilidades, colaborações, de maneira ser implementada em diferentes situações;
• As consequências: os resultados de aplicarmos o padrão;
• As consequências: os resultados de aplicarmos o padrão;
Família de Patterns GoF
GoF (Quatro criadores) é uma familia de Design Patters, são 23 padrões, veja alguns:
• Criação: Abstract Factory, Builder, Factory Method, Prototype, Singleton
• Estrutura: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy
• Comportamento: Chain Of Response, Command Interpreter, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor.
Familia de Patterns J2EE
• J2EE: Busness Delegate, Composite Entity, Composite View, Data Access Object, Fast Lane Reader, Front Controller, Intercepting Filter, Model-View-Controller, Service Locater, Session Facade, Transfer Object, Value List Handler, View Helper
Você pode consultar o catalogo de Patterns do J2EE no endereço abaixo.
Patterns e Certificação
As seguintes certificações Sun exigem conhecimentos de Patterns:
• Sun Certified Web Component Developer
• Sun Certified Enterprise Architect;
Para quem pretende tirar uma destas certificações é necessário estudar todos os patterns, aplicar na prática os principais GoF e conhecer a teoria básica;
Alguns Patterns Service Locator
• Definição: simplifica o acesso a recursos J2EE em um aplicativo centralizando lookups com JNDI em classes específicas de localização de serviços.
• Evita que sua solução tenha alto acoplamento com JNDI Naming Service;
• Tomar cuidado com Service Locates e cluster!
• Utilize sempre que possível ENC.
• Exemplo no JAREF(J2EE Architecture, Research and Education Framework);
Data Access Object
• Definição: centraliza o serviço de persistência de objetos em um pequeno conjunto de classes, evitando por exemplo que o código SQL se espalhe pelo código da solução.
• Mesmo utilizando framework de persistência, utilize Data Access Object
• Exemplo no JAREF(J2EE Architecture, Research and Education Framework);
Model View Control
• Definição: divide o aplicativo em dados, comportamento e apresentação.
• Aplicando o MVC podemos reaproveitar o mesmo dado para múltiplas visualizações;
• Podemos reaproveitar o comportamento(eventos) da solução;
• É um pattern de arquitetura, criado há muito tempo. Pode ser aplicado em qualquer linguagem, mais facilmente com OOP.
• Struts, WebWork, Spring, PicoContainer são exemplos de frameworks J2EE.
• Link comparativo de frameworks MVC: https://equinox.dev.java.net/framework-comparison/WebFrameworks.pdf
Front Controller
• Definição: centraliza requests em um ponto central na solução.
• No lugar de um JSP submit para ouro JSP todos os JSP’s “subments” para um Servlet Controller que será responsável por processar as requisições.
• Exemplo no JAREF(J2EE Architecture, Research and Education Framework);
Command / Action
• Definição: encapsula uma requisição ao software em um objeto.
• Transforma métodos em classes
• Facilita o desenvolvimento de undo/redo
• Aumenta a granularidade do código, permitindo o reuso
• Action do Struts é o principal exemplo de implementação deste pattern
Factory
• Definição: instancia classes conforme demanda, recebendo parâmetros indicativos do objeto a ser instanciado.
• É comum o Controller “inchar”, pois nele incide todas as solicitações externas. Como uma maneira de resolver esse tipo de crescimento desordenado, é sugerido que o Command seja criado sob demanda, e deixa por conta de uma Factory a instanciação das classes Command necessárias.
Dispatcher to views
• Definição: gerencia a saída de informações para a interface desejada pelo cliente. Desatrela a forma de se enxergar os dados para múltiplas visões.
• É uma maneira de se implementar M. V. C. na sua essência, como o Smalltalk pregava.
Intercepting Filter
• Definição: forma para executar pré e pós processamento em request da solução.
• Um Servlet Filter é um exemplo de implementação de um Intercepting Filter para interceptar requests no Web Container;
View Helper
• Definição: simplifica a “redenrização” de objetivos em views com formatação.
• Uma Custom Tag pode representar uma View Helper;
• Uma simples classe convencional com métodos estáticos também;
• Exemplo no JAREF(J2EE Architecture, Research and Education Framework);
Business Delegate
• Definição: em aplicações distribuídas, o acesso remoto/local a EJB’s via JNDI Naming Service e tratamento de erros podem se tornar complexo à medida que o projeto cresce.
• Solução: criar uma classe intermediaria para acessar os EJB’s que contempla as regras de nomes de componentes para lookups, propriedades do servidor J2EE, tratamento de exceptions, etc;
Conclusão
• Os patterns (padrões) previnem erros comuns evitando problemas recorrentes;
• Utilizando patterns você cria soluções padronizadas, facilitando a troca de programadores;
• Você pode criar seus próprios patterns;
• O site theserverside.com contém vários patterns fora do catálogo J2EE e GoF;
Referências:
livro: http://www.submarino.com.br/produto/1/93924/padroes+de+projeto
Livro em inglês: http://www.scribd.com/doc/7282876/Design-Patterns-Gamma-GOF
http://java.sun.com/blueprints/patterns/catalog.html
http://www.scribd.com/doc/16738161/Java-Design-Patterns-With-Examples
http://evandropaes.wordpress.com/2007/02/28/design-patterns/
Referências:
livro: http://www.submarino.com.br/produto/1/93924/padroes+de+projeto
Livro em inglês: http://www.scribd.com/doc/7282876/Design-Patterns-Gamma-GOF
http://java.sun.com/blueprints/patterns/catalog.html
http://www.scribd.com/doc/16738161/Java-Design-Patterns-With-Examples
http://evandropaes.wordpress.com/2007/02/28/design-patterns/
Nenhum comentário :
Postar um comentário