design patterns quais padrões ainda sobrevivem com as novas tecnologias?

57
Globalcode – Open4Education Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias? Rodrigo Cândido da Silva Instrutor VOffice / Globalcode

Upload: ismet

Post on 10-Jan-2016

26 views

Category:

Documents


3 download

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

TRANSCRIPT

Page 1: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education1

Design PatternsQuais padrões ainda sobrevivem com as novas

tecnologias?

Rodrigo Cândido da SilvaInstrutor VOffice / Globalcode

Page 2: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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.

Page 3: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education3

Agenda

> Introdução> GoF Patterns> Core J2EE Patterns> Conclusões> Perguntas e Respostas

Page 4: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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;

Page 5: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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.

Page 6: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education6

Como surgem padrões?

ProblemaProblema

Contextualização

SoluçãoSolução

Benefícios

Padrões Relacionados

Consequências

Direciona

Page 7: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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

Page 8: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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.

Page 9: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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.

Page 10: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education10

GoF Patterns

Comportamento

Cria

ção E

strutura

Classificação Sugerida

Page 11: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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.

Page 12: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education12

Abstract Factory

Page 13: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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.

Page 14: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education14

Singleton

Page 15: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education15

Prototype

> Criar tipo de objetos diferentes, usando como base um protótipo (instância de um objeto com estrutura semelhante).

Page 16: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education16

Prototype

Problema

Solução

Page 17: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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.

Page 18: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education18

Mediator

Problema

Solução

Page 19: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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.

Page 20: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education20

Adapter

Page 21: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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

Page 22: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education22

Proxy

> Exemplo> Stubs e Skeletons do Java RMI.

Page 23: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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;

Page 24: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education24

Flyweight

Problema Solução

Page 25: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education25

Flyweight

Exemplo Implementação

Usando Caching

Page 26: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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.

Page 27: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education27

Template Method

Page 28: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education28

Template Method

Page 29: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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;

Page 30: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education30

Core J2EE Patterns

> Os padrões encontram-se sub-divididos em três categorias:> Apresentação> Negócio> Integração

Page 31: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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;

Page 32: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education32

Intercepting Filter

Problema ->

<- Solução

Page 33: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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;

Page 34: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education34

Front Controller

Problema ->

<- Solução

Page 35: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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.

Page 36: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education36

View Helper

Problema Solução

Page 37: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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.

Page 38: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education38

Composite View

Problema ->

<- Solução

Page 39: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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.

Page 40: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education40

Business Delegate

Problema ->

<- Solução

Page 41: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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.

Page 42: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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

Page 43: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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.

Page 44: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education44

Session Facade

Problema Solução

Client Components

Subsystem Components

Client Components

Subsystem Components

Facade

Page 45: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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.

Page 46: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education46

Business Object

Problema ->

<- Solução

Page 47: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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.

Page 48: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education48

Transfer Object

Problema ->

<- Solução

Page 49: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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.

Page 50: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education50

Data Access Object

Problema ->

<- Solução

Page 51: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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.

Page 52: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education52

Service Activator

Problema ->

<- Solução

Page 53: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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;

Page 54: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education54

Domain Store

Problema ->

<- Solução

Page 55: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education55

Outros Design Patterns...

Page 56: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

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?

Page 57: Design Patterns Quais padrões ainda sobrevivem com as novas tecnologias?

Globalcode – Open4Education57

Perguntas e Respostas

?