SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
Design Patterns para
Java
Daniel Wildt (daniel.wildt@bluestar.inf.br)
JBuilder/Delphi Certified Instructor/Developer
http://www.geocities.com/dwildt2
Bluestar Technology
http://www.bluestar.inf.br
Daniel Wildt (daniel.wildt@bluestar.inf.br)
JBuilder/Delphi Certified Instructor/Developer
http://www.geocities.com/dwildt2
3
Agenda
O que são Design Patterns e suas
características
Padrões de projeto de Mercado, visão
geral
Padrões de Projeto GoF
Criação
Estruturais
Comportamento
4
O que são Design Patterns e suas
características
Na definição de Christopher
Alexander, “Cada padrão descreve um
problema que acontece diversas
vezes em nosso ambiente e descreve
uma solução base de modo que se
possa reutilizar a solução milhares de
vezes...”.
Descrição de objetos e classes que se
comunicam para resolver um
problema de design genérico em um
contexto particular.
5
O que são Design Patterns e suas
características
Cada padrão de projeto possui
características, como:
Nome: sua identificação para o
mercado, normalmente o atributo
mais complicado de se descrever.
Problema: indicar quando o uso do
padrão pode ser interessante.
6
O que são Design Patterns e suas
características
Cada padrão de projeto possui
características, como:
Solução: como aplicar o padrão de
projeto
Consequências: perdas e ganhos
ao aplicar o padrão. As vezes se
pode perder coesão ou ganhar
acoplamento no sistema ao fazer
uso de determinado padrão.
7
Agenda
O que são Design Patterns e suas
características
Padrões de projeto de Mercado, visão
geral
Padrões de Projeto GoF
Criação
Estruturais
Comportamento
8
Padrões de projeto de Mercado,
visão geral
Padrões de projeto GoF (serão
apresentados em seguida)
Padrões de projeto Sun J2EE
Data Transfer Object
Data Access Object
Front Controller
Value List Handler
Viewer Helper
http://java.sun.com/blueprints/corej2eepatterns/P
atterns/index.html
9
Padrões de projeto de Mercado,
visão geral
Coad Patterns
http://www.thecoadletter.com/coadletter/
Refactoring Patterns
http://www.refactoring.com
10
Agenda
O que são Design Patterns e suas
características
Padrões de projeto de Mercado, visão
geral
Padrões de Projeto GoF
Criação
Estruturais
Comportamento
11
Padrões de Projeto GoF
Referência:
Título: Design Patterns : Elements of Reusable
Object-Oriented Software
Autores: Eric Gamma, Richard Helm, Ralph
Johnson, John Vlissides
ISBN: 0201633612
Editora: Pearson
Publicação: 1994
12
Agenda
O que são Design Patterns e suas
características
Padrões de projeto de Mercado, visão
geral
Padrões de Projeto GoF
Criação
Estruturais
Comportamento
13
Padrões de Projeto GoF
Criação:
Abstract Factory: provê uma interface para
se criar familias de objetos relacionados ou
dependentes sem utilizar as classes
concretas.
Builder: separa o processo de construção de
um objeto complexo de sua representação.
Deste modo o mesmo processo de
construção pode retornar diferentes
representações.
14
Padrões de Projeto GoF
Criação:
Factory: define uma interface para a criação
de um objeto, mas deixa as classes
escolherem qual classe deve ser instanciada.
Prototype: estabelece padrão para permitir a
cópia de objetos (clone)
Singleton: estabelece a regra de que só pode
existir um objeto disponível na memória para
a classe que implementa este padrão.
15
Agenda
O que são Design Patterns e suas
características
Padrões de projeto de Mercado, visão
geral
Padrões de Projeto GoF
Criação
Estruturais
Comportamento
16
Padrões de Projeto GoF
Estruturais:
Adapter: permite que classes trabalhem
juntas onde em outros casos não poderiam
por possuirem interfaces diferentes
Bridge: desacopla a implementação de uma
abstração de modo que as duas possam
variar de forma independente.
Composite: capacidade de utilizar relações
de parte-todo (composição)
17
Padrões de Projeto GoF
Estruturais:
Decorator: anexa responsabilidades a um
objeto de forma dinâmica. Alternativa para
especialização de classes.
Facade: prover uma interface unificada para
um conjunto de interfaces. Interface de mais
alto nível para se trabalhar.
18
Padrões de Projeto GoF
Estruturais:
Flyweight: técnica para permitir que objetos
possam ser usados em múltiplos contextos
de forma simultânea.
Proxy: controla o acesso ao objeto original e
em alguns casos visa diminuir a
complexidade de uso de objetos.
19
Agenda
O que são Design Patterns e suas
características
Padrões de projeto de Mercado, visão
geral
Padrões de Projeto GoF
Criação
Estruturais
Comportamento
20
Padrões de Projeto GoF
Comportamento:
Chain of Responsibility: evita acoplamento
entre objetos para responder a requests. Cria
uma cadeia de processamento.
Command: encapsula a requisição feita para
um objeto.
Interpreter: padrão para suprir a
necessidade de interpretadores de
linguagens através de sua gramática.
21
Padrões de Projeto GoF
Comportamento:
Iterator: provê acesso sequêncial aos
elementos de uma agregação sem expor sua
representação.
Mediator: define objeto que encapsula o
relacionamento entre outros objetos. Agrega
a perda de acoplamento explícito entre
classes.
Memento: sem violar encapsulação, captura
e externaliza o estado interno de um objeto.
22
Padrões de Projeto GoF
Comportamento:
Observer: define uma dependência de um
para muitos onde quando um objeto muda
seu estado, todos associados são notificados.
State: permite ao objeto modificar seu
comportamento quando seu estado interno
muda.
Strategy: necessidade de diferentes variantes
de um algoritmo, conforme situação.
Interdependência.
23
Padrões de Projeto GoF
Comportamento:
Template Method: define o esqueleto de um
algoritmo e permite que subclasses redefinam
alguns passos sem modificar a estrutura do
algoritmo.
Visitor: permite definir uma nova operação
sem modificar a estrutura das outras classes
que em este opera.
24
Obrigado!
Design Patterns para Java
Daniel Wildt (daniel.wildt@bluestar.inf.br)
JBuilder/Delphi Certified Instructor/Developer
http://www.geocities.com/dwildt2

Weitere ähnliche Inhalte

Was ist angesagt? (6)

Patterns: Factory Method
Patterns: Factory MethodPatterns: Factory Method
Patterns: Factory Method
 
BDD com Cucumber
BDD com CucumberBDD com Cucumber
BDD com Cucumber
 
Padrões-08 - Padrões Criacionais - Abstract Factory
Padrões-08 - Padrões Criacionais - Abstract FactoryPadrões-08 - Padrões Criacionais - Abstract Factory
Padrões-08 - Padrões Criacionais - Abstract Factory
 
Curso Básico Android - Aula 01
Curso Básico Android - Aula 01Curso Básico Android - Aula 01
Curso Básico Android - Aula 01
 
BDD: Cucumber + Selenium + Java
BDD: Cucumber + Selenium + JavaBDD: Cucumber + Selenium + Java
BDD: Cucumber + Selenium + Java
 
Especificação por meio de exemplos (BDD, testes de aceitação, ...)
Especificação por meio de exemplos (BDD, testes de aceitação, ...)Especificação por meio de exemplos (BDD, testes de aceitação, ...)
Especificação por meio de exemplos (BDD, testes de aceitação, ...)
 

Ähnlich wie GoF Design Patterns - Borland Conference (BorCon) 2004

Apresentação Introdução Design Patterns
Apresentação Introdução Design PatternsApresentação Introdução Design Patterns
Apresentação Introdução Design Patterns
Lucas Simões Maistro
 
Arquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhrArquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhr
Thiago Boufleuhr
 
Padrões De Projeto e Anti Patterns
Padrões De Projeto e Anti PatternsPadrões De Projeto e Anti Patterns
Padrões De Projeto e Anti Patterns
Herval Freire
 

Ähnlich wie GoF Design Patterns - Borland Conference (BorCon) 2004 (20)

POO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdfPOO2-Pre-32-PadroesProjetos_.pdf
POO2-Pre-32-PadroesProjetos_.pdf
 
Padrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a ObjetosPadrões de Projeto de Software Orientado a Objetos
Padrões de Projeto de Software Orientado a Objetos
 
GoF.ppt
GoF.pptGoF.ppt
GoF.ppt
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Apresentação Introdução Design Patterns
Apresentação Introdução Design PatternsApresentação Introdução Design Patterns
Apresentação Introdução Design Patterns
 
Padrões de design orientado a objetos
Padrões de design orientado a objetosPadrões de design orientado a objetos
Padrões de design orientado a objetos
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Arquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhrArquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhr
 
Padrões de Projeto de Software
Padrões de Projeto de SoftwarePadrões de Projeto de Software
Padrões de Projeto de Software
 
5507 os principais design patterns
5507   os principais design patterns5507   os principais design patterns
5507 os principais design patterns
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Padroes de projetos gof
Padroes de projetos gofPadroes de projetos gof
Padroes de projetos gof
 
Travalho versao final
Travalho versao finalTravalho versao final
Travalho versao final
 
Design pattern
Design patternDesign pattern
Design pattern
 
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgePadrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e Bridge
 
Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014
 
Padrões De Projeto e Anti Patterns
Padrões De Projeto e Anti PatternsPadrões De Projeto e Anti Patterns
Padrões De Projeto e Anti Patterns
 
Padrões de Projeto (GoF)
Padrões de Projeto (GoF)Padrões de Projeto (GoF)
Padrões de Projeto (GoF)
 
Análise de sistemas oo 1
Análise de sistemas oo   1Análise de sistemas oo   1
Análise de sistemas oo 1
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos
 

Mehr von Daniel Wildt

O que aprendemos com o eXtreme Programming e com o mundo Ágil | #XPConfBR 2014
O que aprendemos com o eXtreme Programming e com o mundo Ágil | #XPConfBR 2014O que aprendemos com o eXtreme Programming e com o mundo Ágil | #XPConfBR 2014
O que aprendemos com o eXtreme Programming e com o mundo Ágil | #XPConfBR 2014
Daniel Wildt
 
Agile KickStart 2 - Escrevendo User Stories
Agile KickStart 2 - Escrevendo User StoriesAgile KickStart 2 - Escrevendo User Stories
Agile KickStart 2 - Escrevendo User Stories
Daniel Wildt
 
Agile KickStart 3 - Planejamento e Dia a Dia de Projeto
Agile KickStart 3 - Planejamento e Dia a Dia de ProjetoAgile KickStart 3 - Planejamento e Dia a Dia de Projeto
Agile KickStart 3 - Planejamento e Dia a Dia de Projeto
Daniel Wildt
 
Agile KickStart 4 - Melhoria Contínua
Agile KickStart 4 - Melhoria ContínuaAgile KickStart 4 - Melhoria Contínua
Agile KickStart 4 - Melhoria Contínua
Daniel Wildt
 
Agile Kickstart 1 - Cultura Ágil
Agile Kickstart 1 - Cultura ÁgilAgile Kickstart 1 - Cultura Ágil
Agile Kickstart 1 - Cultura Ágil
Daniel Wildt
 

Mehr von Daniel Wildt (20)

Não Espere!
Não Espere! Não Espere!
Não Espere!
 
Pré-Jogo / Inception - Descobrindo Produtos Viáveis
Pré-Jogo / Inception - Descobrindo Produtos ViáveisPré-Jogo / Inception - Descobrindo Produtos Viáveis
Pré-Jogo / Inception - Descobrindo Produtos Viáveis
 
O que é inovação?
O que é inovação?O que é inovação?
O que é inovação?
 
O potencial Mobile [GUDAY 2016]
O potencial Mobile [GUDAY 2016]O potencial Mobile [GUDAY 2016]
O potencial Mobile [GUDAY 2016]
 
Lean Canvas
Lean CanvasLean Canvas
Lean Canvas
 
O que aprendemos com o eXtreme Programming e com o mundo Ágil | #XPConfBR 2014
O que aprendemos com o eXtreme Programming e com o mundo Ágil | #XPConfBR 2014O que aprendemos com o eXtreme Programming e com o mundo Ágil | #XPConfBR 2014
O que aprendemos com o eXtreme Programming e com o mundo Ágil | #XPConfBR 2014
 
Aula: Agile Kickstart - Como criar equipes de alto desempenho?
Aula: Agile Kickstart - Como criar equipes de alto desempenho?Aula: Agile Kickstart - Como criar equipes de alto desempenho?
Aula: Agile Kickstart - Como criar equipes de alto desempenho?
 
Causas - Qual é a sua?
Causas - Qual é a sua?Causas - Qual é a sua?
Causas - Qual é a sua?
 
[RS on Rails 2013] Construa um produto. Quando? Neste final de semana.
[RS on Rails 2013] Construa um produto. Quando? Neste final de semana.[RS on Rails 2013] Construa um produto. Quando? Neste final de semana.
[RS on Rails 2013] Construa um produto. Quando? Neste final de semana.
 
Tarefas! O Que fazer?
Tarefas! O Que fazer?Tarefas! O Que fazer?
Tarefas! O Que fazer?
 
#StartupDojo Porto Alegre - Julho/2013 (Nós Coworking)
#StartupDojo Porto Alegre - Julho/2013 (Nós Coworking)#StartupDojo Porto Alegre - Julho/2013 (Nós Coworking)
#StartupDojo Porto Alegre - Julho/2013 (Nós Coworking)
 
Mantra das Possibilidades - AgileBrazil 2013
Mantra das Possibilidades - AgileBrazil 2013Mantra das Possibilidades - AgileBrazil 2013
Mantra das Possibilidades - AgileBrazil 2013
 
JustJava 2013 - Indo para as nuvens?
JustJava 2013 - Indo para as nuvens?JustJava 2013 - Indo para as nuvens?
JustJava 2013 - Indo para as nuvens?
 
Agile KickStart 2 - Escrevendo User Stories
Agile KickStart 2 - Escrevendo User StoriesAgile KickStart 2 - Escrevendo User Stories
Agile KickStart 2 - Escrevendo User Stories
 
Agile KickStart 3 - Planejamento e Dia a Dia de Projeto
Agile KickStart 3 - Planejamento e Dia a Dia de ProjetoAgile KickStart 3 - Planejamento e Dia a Dia de Projeto
Agile KickStart 3 - Planejamento e Dia a Dia de Projeto
 
Agile KickStart 4 - Melhoria Contínua
Agile KickStart 4 - Melhoria ContínuaAgile KickStart 4 - Melhoria Contínua
Agile KickStart 4 - Melhoria Contínua
 
Agile Kickstart 1 - Cultura Ágil
Agile Kickstart 1 - Cultura ÁgilAgile Kickstart 1 - Cultura Ágil
Agile Kickstart 1 - Cultura Ágil
 
Quem é você?
Quem é você?Quem é você?
Quem é você?
 
Agile Transition. PMBOK knowledge areas and how values, principles and agile ...
Agile Transition. PMBOK knowledge areas and how values, principles and agile ...Agile Transition. PMBOK knowledge areas and how values, principles and agile ...
Agile Transition. PMBOK knowledge areas and how values, principles and agile ...
 
Startup Dojo!
Startup Dojo!Startup Dojo!
Startup Dojo!
 

GoF Design Patterns - Borland Conference (BorCon) 2004

  • 1. Design Patterns para Java Daniel Wildt (daniel.wildt@bluestar.inf.br) JBuilder/Delphi Certified Instructor/Developer http://www.geocities.com/dwildt2
  • 2. Bluestar Technology http://www.bluestar.inf.br Daniel Wildt (daniel.wildt@bluestar.inf.br) JBuilder/Delphi Certified Instructor/Developer http://www.geocities.com/dwildt2
  • 3. 3 Agenda O que são Design Patterns e suas características Padrões de projeto de Mercado, visão geral Padrões de Projeto GoF Criação Estruturais Comportamento
  • 4. 4 O que são Design Patterns e suas características Na definição de Christopher Alexander, “Cada padrão descreve um problema que acontece diversas vezes em nosso ambiente e descreve uma solução base de modo que se possa reutilizar a solução milhares de vezes...”. Descrição de objetos e classes que se comunicam para resolver um problema de design genérico em um contexto particular.
  • 5. 5 O que são Design Patterns e suas características Cada padrão de projeto possui características, como: Nome: sua identificação para o mercado, normalmente o atributo mais complicado de se descrever. Problema: indicar quando o uso do padrão pode ser interessante.
  • 6. 6 O que são Design Patterns e suas características Cada padrão de projeto possui características, como: Solução: como aplicar o padrão de projeto Consequências: perdas e ganhos ao aplicar o padrão. As vezes se pode perder coesão ou ganhar acoplamento no sistema ao fazer uso de determinado padrão.
  • 7. 7 Agenda O que são Design Patterns e suas características Padrões de projeto de Mercado, visão geral Padrões de Projeto GoF Criação Estruturais Comportamento
  • 8. 8 Padrões de projeto de Mercado, visão geral Padrões de projeto GoF (serão apresentados em seguida) Padrões de projeto Sun J2EE Data Transfer Object Data Access Object Front Controller Value List Handler Viewer Helper http://java.sun.com/blueprints/corej2eepatterns/P atterns/index.html
  • 9. 9 Padrões de projeto de Mercado, visão geral Coad Patterns http://www.thecoadletter.com/coadletter/ Refactoring Patterns http://www.refactoring.com
  • 10. 10 Agenda O que são Design Patterns e suas características Padrões de projeto de Mercado, visão geral Padrões de Projeto GoF Criação Estruturais Comportamento
  • 11. 11 Padrões de Projeto GoF Referência: Título: Design Patterns : Elements of Reusable Object-Oriented Software Autores: Eric Gamma, Richard Helm, Ralph Johnson, John Vlissides ISBN: 0201633612 Editora: Pearson Publicação: 1994
  • 12. 12 Agenda O que são Design Patterns e suas características Padrões de projeto de Mercado, visão geral Padrões de Projeto GoF Criação Estruturais Comportamento
  • 13. 13 Padrões de Projeto GoF Criação: Abstract Factory: provê uma interface para se criar familias de objetos relacionados ou dependentes sem utilizar as classes concretas. Builder: separa o processo de construção de um objeto complexo de sua representação. Deste modo o mesmo processo de construção pode retornar diferentes representações.
  • 14. 14 Padrões de Projeto GoF Criação: Factory: define uma interface para a criação de um objeto, mas deixa as classes escolherem qual classe deve ser instanciada. Prototype: estabelece padrão para permitir a cópia de objetos (clone) Singleton: estabelece a regra de que só pode existir um objeto disponível na memória para a classe que implementa este padrão.
  • 15. 15 Agenda O que são Design Patterns e suas características Padrões de projeto de Mercado, visão geral Padrões de Projeto GoF Criação Estruturais Comportamento
  • 16. 16 Padrões de Projeto GoF Estruturais: Adapter: permite que classes trabalhem juntas onde em outros casos não poderiam por possuirem interfaces diferentes Bridge: desacopla a implementação de uma abstração de modo que as duas possam variar de forma independente. Composite: capacidade de utilizar relações de parte-todo (composição)
  • 17. 17 Padrões de Projeto GoF Estruturais: Decorator: anexa responsabilidades a um objeto de forma dinâmica. Alternativa para especialização de classes. Facade: prover uma interface unificada para um conjunto de interfaces. Interface de mais alto nível para se trabalhar.
  • 18. 18 Padrões de Projeto GoF Estruturais: Flyweight: técnica para permitir que objetos possam ser usados em múltiplos contextos de forma simultânea. Proxy: controla o acesso ao objeto original e em alguns casos visa diminuir a complexidade de uso de objetos.
  • 19. 19 Agenda O que são Design Patterns e suas características Padrões de projeto de Mercado, visão geral Padrões de Projeto GoF Criação Estruturais Comportamento
  • 20. 20 Padrões de Projeto GoF Comportamento: Chain of Responsibility: evita acoplamento entre objetos para responder a requests. Cria uma cadeia de processamento. Command: encapsula a requisição feita para um objeto. Interpreter: padrão para suprir a necessidade de interpretadores de linguagens através de sua gramática.
  • 21. 21 Padrões de Projeto GoF Comportamento: Iterator: provê acesso sequêncial aos elementos de uma agregação sem expor sua representação. Mediator: define objeto que encapsula o relacionamento entre outros objetos. Agrega a perda de acoplamento explícito entre classes. Memento: sem violar encapsulação, captura e externaliza o estado interno de um objeto.
  • 22. 22 Padrões de Projeto GoF Comportamento: Observer: define uma dependência de um para muitos onde quando um objeto muda seu estado, todos associados são notificados. State: permite ao objeto modificar seu comportamento quando seu estado interno muda. Strategy: necessidade de diferentes variantes de um algoritmo, conforme situação. Interdependência.
  • 23. 23 Padrões de Projeto GoF Comportamento: Template Method: define o esqueleto de um algoritmo e permite que subclasses redefinam alguns passos sem modificar a estrutura do algoritmo. Visitor: permite definir uma nova operação sem modificar a estrutura das outras classes que em este opera.
  • 24. 24 Obrigado! Design Patterns para Java Daniel Wildt (daniel.wildt@bluestar.inf.br) JBuilder/Delphi Certified Instructor/Developer http://www.geocities.com/dwildt2