Upload
ismet
View
27
Download
3
Embed Size (px)
DESCRIPTION
Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?. Rodrigo Cândido da Silva Instrutor VOffice / Globalcode. Objetivo. Realizar uma introdução sobre padrões de projetos e demonstrar alguns padrões existentes no catálogo GoF e Core J2EE. Agenda. Introdução GoF Patterns - PowerPoint PPT Presentation
Citation preview
Globalcode – Open4Education1
Design PatternsQuais padrões ainda sobrevivem com as novas
tecnologias?
Rodrigo Cândido da SilvaInstrutor VOffice / Globalcode
Globalcode – Open4Education2
Objetivo
> Realizar uma introdução sobre padrões de projetos e demonstrar alguns padrões
existentes no catálogo GoF e Core J2EE.
Globalcode – Open4Education3
Agenda
> Introdução> GoF Patterns> Core J2EE Patterns> Conclusões> Perguntas e Respostas
Globalcode – Open4Education4
Introdução
> 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 POO para problemas que incidem em
diversos cenários de desenvolvimento;> Uma definição de conjunto finito de responsabilidades
para uma classe;
Globalcode – Open4Education5
Introdução
> Ao adotar design-patterns...> Seu código fica mais organizado;> Aumenta a qualidade;> Diminui a complexidade;> Facilita a comunicação dentro da equipe;> Facilita a ambientação de novos membros na equipe;> Aprende com a experiência dos outros.
Globalcode – Open4Education6
Como surgem padrões?
ProblemaProblema
Contextualização
SoluçãoSolução
Benefícios
Padrões Relacionados
Consequências
Direciona
Globalcode – Open4Education7
Como documentá-los?
> Elementos de um padrão...> Nome> Problema
> Quando aplicar o padrão, em quais condições?
> Solução> Como usar os recursos disponíveis (classes e objetos) para
solucionar o problema contextualizado.
> Benefícios> Conseqüências
> Custos de utilização> Impactos na flexibilidade, portabilidade, performance, etc.
> Padrões relacionados
Globalcode – Open4Education8
Família de Padrões
> Existem algumas famílias conhecidas de padrões...> GoF (Gang of Four)> Core J2EE Patterns> GRASP> POSA> Enterprise Integration Patterns> SOA Patterns> etc.
Globalcode – Open4Education9
GoF Patterns
> Surgiram em 1995 com a publicação do livro “Design Patterns: Elements of Reusable Object-Oriented Software”;
> Devido ao livro possuir 4 autores, este catálogo de padrões ficou popularmente conhecimento como GoF (Gang of Four);
> Define uma lista com 23 padrões de projeto;
> A publicação deste livro é considerado um marco na evolução e utilização de padrões de projetos dentro dos processos de desenvolvimento de software.
Globalcode – Open4Education10
GoF Patterns
Comportamento
Cria
ção E
strutura
Classificação Sugerida
Globalcode – Open4Education11
Abstract Factory
> Prover uma interface para criação de famílias de objetos relacionados ou dependentes sem especificar suas classes concretas.
> Benefícios> Promover o desacoplamento
entre classes da aplicação;> Abstrair a lógica de criação e
inicialização dos objetos;> Tornar facilitada a possível
troca entre famílias de objetos.
Globalcode – Open4Education12
Abstract Factory
Globalcode – Open4Education13
Singleton
> Garantir para que uma determinada classe do sistema terá somente um número determinado de instâncias (objeto) criadas, provendo um ponto de acesso global a mesma.
> Benefícios> Controlar o acesso as instâncias da
classe;> Reduzir a utilização desnecessária de
memória;> Fornecer mais flexibilidade que a
utilização de estruturas estáticas;> Habilita ter subclasses.
Globalcode – Open4Education14
Singleton
Globalcode – Open4Education15
Prototype
> Criar tipo de objetos diferentes, usando como base um protótipo (instância de um objeto com estrutura semelhante).
Globalcode – Open4Education16
Prototype
Problema
Solução
Globalcode – Open4Education17
Mediator
> Definir um objeto que encapsula o modelo como um conjunto de objetos interagem entre si, promovendo o fraco acoplamento.
> Benefícios> Desacoplar os diversos participantes;> Eliminar relacionamentos N-to-N;> Centralizar o controle;> Facilitar inclusão de novos
participantes.
Globalcode – Open4Education18
Mediator
Problema
Solução
Globalcode – Open4Education19
Adapter
> Converter a interface de uma classe em outra interface esperada pelo cliente. Atuar como um intermediário entre duas classes, convertendo a interface de uma para que a mesma possa ser utilizada pela outra.
> Benefícios> Permitir dois objetos incompatíveis se
comunicar e interagir;> Elevar a reusabilidade de sistemas
antigos.
Globalcode – Open4Education20
Adapter
Globalcode – Open4Education21
Proxy
> Prover um objeto substituto para interceptar e controlar o acesso a um outro objeto.
> Benefícios> Esconder complexidades
relacionadas com o acesso ao objeto destino (acesso remoto);
> Transparência para o cliente;> Permitir maior eficiência com
caching no cliente
Globalcode – Open4Education22
Proxy
> Exemplo> Stubs e Skeletons do Java RMI.
Globalcode – Open4Education23
Flyweight
> Utilizar o mecanismo de compartilhamento de instâncias para suportar uma alto número de objetos na aplicação de maneira eficiente.
> Benefícios> Reduzir número de objetos a
serem tratados pela aplicação;> Reduzir utilização de memória;
Globalcode – Open4Education24
Flyweight
Problema Solução
Globalcode – Open4Education25
Flyweight
Exemplo Implementação
Usando Caching
Globalcode – Open4Education26
Template Method
> Definir o esqueleto de um algoritmo dentro de uma operação em uma classe, deixando alguns passos a serem preenchidos pelas subclasses.
Globalcode – Open4Education27
Template Method
Globalcode – Open4Education28
Template Method
Globalcode – Open4Education29
Core J2EE Patterns
> Surgiu com a publicação do livro Core J2EE Patterns em 2001;
> Descreve um catálogo de 25 padrões específicos para plataforma Java EE;
> Produto de anos de experiência aplicados em consultoria em projetos Java EE, documentados por consultores da Sun Microsystems.
> Atualmente este livro encontra-se publicado em segunda edição, com alguns “novos” design patterns;
Globalcode – Open4Education30
Core J2EE Patterns
> Os padrões encontram-se sub-divididos em três categorias:> Apresentação> Negócio> Integração
Globalcode – Open4Education31
Intercepting Filter
> Permitir o pré e/ou pós processamento de uma requisição para um determinado componente, possibilitando a facilidade na configuração de ativação e desativação deste processamento.
> Benefícios> Centralizar controle;> Promover a reusabilidade;> Fornecer flexibilidade através de
configurações declarativas;
Globalcode – Open4Education32
Intercepting Filter
Problema ->
<- Solução
Globalcode – Open4Education33
Front Controller
> Centralizar o processamento de requisições em uma único e centralizado componente. Redirecionar o processamento após sua finalização, para a view respectiva.
> Benefícios> Controle centralizado;> Melhorar gerenciamento de segurança;> Promover reuso;
Globalcode – Open4Education34
Front Controller
Problema ->
<- Solução
Globalcode – Open4Education35
View Helper
> Separar do código as responsabilidades de formatação da interface do usuário, do processamento de dados necessário à construção da view.
Globalcode – Open4Education36
View Helper
Problema Solução
Globalcode – Open4Education37
Composite View
> Componentizar a view para a partir de views menores dividir as responsabilidades, simplificar a construção da interface e promover o reuso.
Globalcode – Open4Education38
Composite View
Problema ->
<- Solução
Globalcode – Open4Education39
Business Delegate
> Esconder dos clientes detalhes acerca da camada de negócios, fornecendo uma interface de serviços semelhantes aos serviços de negócio.
> Benefícios> Reduzir acoplamento;> Traduzir exceções dos serviços de negócio;> Expor interfaces mais simples;> Poder melhorar performance utilizando
estratégias de cache;> Implementar recuperação à falhas;> Ocultar o fato dos objetos de negócio estarem
remotos.
Globalcode – Open4Education40
Business Delegate
Problema ->
<- Solução
Globalcode – Open4Education41
Service Locator
> Esconder dos clientes a necessidade do conhecimento dos serviços de localização (JNDI) e da lógica necessária para utilização do mesmo, fornecendo uma interface simplificada para recuperar os componentes remotos.
Globalcode – Open4Education42
Service Locator
Problema Solução
Client InitialContext
Create
Lookup
Create
EJB
Invoke Business Method
ServiceLocator InitialContext
Create
Lookup
Create
EJB
Invoke Business Method
Client
Obtain Business Service
Globalcode – Open4Education43
Session Facade
> Simplificar a interface do cliente dos componentes de negócio e controlar o acesso e a lógica de negócio entre os componentes existentes.
> Benefícios> Introduzir uma camada
controladora;> Expor uma interface uniforme;> Reduzir o acoplamento do cliente;> Melhorar a performance> Centralizar o controle de segurança
e transações;> Reduzir a interface visível para o
cliente.
Globalcode – Open4Education44
Session Facade
Problema Solução
Client Components
Subsystem Components
Client Components
Subsystem Components
Facade
Globalcode – Open4Education45
Business Object
> Separar dados de negócio da lógica usando um modelo de objetos. Abstrair os dados de negócio da aplicação, representando uma entidade.
Globalcode – Open4Education46
Business Object
Problema ->
<- Solução
Globalcode – Open4Education47
Transfer Object
> Reduzir a quantidade de requisições necessárias para recuperar um objeto. Encapsular um subconjunto de dados a ser utilizado pelo cliente, afim de retorná-los em somente uma requisição remota.
Globalcode – Open4Education48
Transfer Object
Problema ->
<- Solução
Globalcode – Open4Education49
Data Access Object
> Abstrair e encapsular todo o acesso a uma fonte de dados, separando-a do código de negócio e visualização da aplicação.
Globalcode – Open4Education50
Data Access Object
Problema ->
<- Solução
Globalcode – Open4Education51
Service Activator
> Receber requisições e mensagens assíncronas do cliente. Localizar e chamar os métodos de negócio para atender as requisições de forma assíncrona.
Globalcode – Open4Education52
Service Activator
Problema ->
<- Solução
Globalcode – Open4Education53
Domain Store
> Oferecer um mecanismo transparente para persistência dos objetos de negócio. Abstrair o repositório de dados do cliente, afim de fornecer um mecanismo de persistência automático.
> Benefícios> Separar modelo de objetos de
negócio da lógica de persistência;
> Melhorar testabilidade da camada de persistência;
Globalcode – Open4Education54
Domain Store
Problema ->
<- Solução
Globalcode – Open4Education55
Outros Design Patterns...
Globalcode – Open4Education56
Conclusões
> Será que alguns padrões de projetos morreram com a evolução das novas tecnologias?
> Devo realmente utilizar padrões de projetos na minha aplicação?
> Qual será o futuro dos padrões de projetos? Terão eles um fim?
Globalcode – Open4Education57
Perguntas e Respostas
?