Design Patterns

Extraído do site www.portaljava.com

 

Portal Java Tutorial: Design Patterns por Dennys Fredericci Introdução Básica

Primeiramente precisamos saber o que é um Design Pattern.

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:

            Um nome: Transfer Object

            Um outro nome(also know as): Value Object

            Um problema: alguma entidades contém dados que são sempre lidos em grupo…

            Uma solução: serializar todos os dados da entidade em um objeto…

 

Familia de Patterns GoF

GoF é 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.

http://java.sun.com/blueprints/patterns/catalog.html

 

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 dos mais obscuros;

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 J2EE são pouco fáceis de entender;

            • 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;

Deixe um comentário