padrões de projeto. padrões padrões de projeto padrões de padrões acoplamento coesão reuso de...
TRANSCRIPT
![Page 1: Padrões de Projeto. Padrões Padrões de Projeto Padrões de Padrões Acoplamento Coesão Reuso de classes e objetos Interface x Implementação Herança de](https://reader035.vdocuments.com.br/reader035/viewer/2022081419/552fc181497959413d8f2677/html5/thumbnails/1.jpg)
Padrões de Projeto
![Page 2: Padrões de Projeto. Padrões Padrões de Projeto Padrões de Padrões Acoplamento Coesão Reuso de classes e objetos Interface x Implementação Herança de](https://reader035.vdocuments.com.br/reader035/viewer/2022081419/552fc181497959413d8f2677/html5/thumbnails/2.jpg)
Padrões
Padrões de Projeto
![Page 3: Padrões de Projeto. Padrões Padrões de Projeto Padrões de Padrões Acoplamento Coesão Reuso de classes e objetos Interface x Implementação Herança de](https://reader035.vdocuments.com.br/reader035/viewer/2022081419/552fc181497959413d8f2677/html5/thumbnails/3.jpg)
Padrões de Padrões
• Acoplamento• Coesão• Reuso de classes e objetos• Interface x Implementação• Herança de classe x Herança de
interface• Composição x Herança• Delegação
Padrões de Projeto
![Page 4: Padrões de Projeto. Padrões Padrões de Projeto Padrões de Padrões Acoplamento Coesão Reuso de classes e objetos Interface x Implementação Herança de](https://reader035.vdocuments.com.br/reader035/viewer/2022081419/552fc181497959413d8f2677/html5/thumbnails/4.jpg)
Padrões abordados
• Singleton• Prototype• Factory Method• Abstract Factory• Adapter• Composite• Decorator• Facade
• Proxy• Command• Observer• State• Strategy• Visitor
Padrões de Projeto
![Page 5: Padrões de Projeto. Padrões Padrões de Projeto Padrões de Padrões Acoplamento Coesão Reuso de classes e objetos Interface x Implementação Herança de](https://reader035.vdocuments.com.br/reader035/viewer/2022081419/552fc181497959413d8f2677/html5/thumbnails/5.jpg)
Singleton
• Única instância de uma classe
• Pattern ou Anti-pattern?– Sincronização– Classloading– Distribuição– Escopo– [Não] coleta de lixo – Testes– Reuso
Padrões de Projeto
![Page 6: Padrões de Projeto. Padrões Padrões de Projeto Padrões de Padrões Acoplamento Coesão Reuso de classes e objetos Interface x Implementação Herança de](https://reader035.vdocuments.com.br/reader035/viewer/2022081419/552fc181497959413d8f2677/html5/thumbnails/6.jpg)
Prototype
• Clonagem• Fundo (deep ) x Raso
(shallow)• Collections• Transients
Padrões de Projeto
![Page 7: Padrões de Projeto. Padrões Padrões de Projeto Padrões de Padrões Acoplamento Coesão Reuso de classes e objetos Interface x Implementação Herança de](https://reader035.vdocuments.com.br/reader035/viewer/2022081419/552fc181497959413d8f2677/html5/thumbnails/7.jpg)
Factory Method
• Criar objetos sem especificar a classe concreta
• Polimórficos ou não
Padrões de Projeto
![Page 8: Padrões de Projeto. Padrões Padrões de Projeto Padrões de Padrões Acoplamento Coesão Reuso de classes e objetos Interface x Implementação Herança de](https://reader035.vdocuments.com.br/reader035/viewer/2022081419/552fc181497959413d8f2677/html5/thumbnails/8.jpg)
Abstract Factory
• Criar familias de objetos relacionados• Independência da camada abaixo• Custo de complexidade
Padrões de Projeto
![Page 9: Padrões de Projeto. Padrões Padrões de Projeto Padrões de Padrões Acoplamento Coesão Reuso de classes e objetos Interface x Implementação Herança de](https://reader035.vdocuments.com.br/reader035/viewer/2022081419/552fc181497959413d8f2677/html5/thumbnails/9.jpg)
Abstract Factory
Padrões de Projeto
![Page 10: Padrões de Projeto. Padrões Padrões de Projeto Padrões de Padrões Acoplamento Coesão Reuso de classes e objetos Interface x Implementação Herança de](https://reader035.vdocuments.com.br/reader035/viewer/2022081419/552fc181497959413d8f2677/html5/thumbnails/10.jpg)
Adapter
• Reuso quando uma interface diferente é esperada
Padrões de Projeto
![Page 11: Padrões de Projeto. Padrões Padrões de Projeto Padrões de Padrões Acoplamento Coesão Reuso de classes e objetos Interface x Implementação Herança de](https://reader035.vdocuments.com.br/reader035/viewer/2022081419/552fc181497959413d8f2677/html5/thumbnails/11.jpg)
Composite
• Estruturas parte-todo (árvore)
Padrões de Projeto
![Page 12: Padrões de Projeto. Padrões Padrões de Projeto Padrões de Padrões Acoplamento Coesão Reuso de classes e objetos Interface x Implementação Herança de](https://reader035.vdocuments.com.br/reader035/viewer/2022081419/552fc181497959413d8f2677/html5/thumbnails/12.jpg)
Decorator
Padrões de Projeto
• Adicionar responsabilidade sem adicionar dependência
![Page 13: Padrões de Projeto. Padrões Padrões de Projeto Padrões de Padrões Acoplamento Coesão Reuso de classes e objetos Interface x Implementação Herança de](https://reader035.vdocuments.com.br/reader035/viewer/2022081419/552fc181497959413d8f2677/html5/thumbnails/13.jpg)
Facade
Padrões de Projeto
• Isolar o cliente da complexidade de um subsistema
![Page 14: Padrões de Projeto. Padrões Padrões de Projeto Padrões de Padrões Acoplamento Coesão Reuso de classes e objetos Interface x Implementação Herança de](https://reader035.vdocuments.com.br/reader035/viewer/2022081419/552fc181497959413d8f2677/html5/thumbnails/14.jpg)
Proxy
Padrões de Projeto
• “Super” referência– Remoting– Lazy– Secure …
• Dynamic Proxy– Interface implementada
em runtime– InvocationHandler
![Page 15: Padrões de Projeto. Padrões Padrões de Projeto Padrões de Padrões Acoplamento Coesão Reuso de classes e objetos Interface x Implementação Herança de](https://reader035.vdocuments.com.br/reader035/viewer/2022081419/552fc181497959413d8f2677/html5/thumbnails/15.jpg)
Command
• Execução flexível– Agendamento– Enfileiramento– Persistência– Compensação– Composição
Padrões de Projeto
![Page 16: Padrões de Projeto. Padrões Padrões de Projeto Padrões de Padrões Acoplamento Coesão Reuso de classes e objetos Interface x Implementação Herança de](https://reader035.vdocuments.com.br/reader035/viewer/2022081419/552fc181497959413d8f2677/html5/thumbnails/16.jpg)
Observer
T V
a 10 45
b 12 24
Padrões de Projeto
0204060
Modela(10,45)b(12,24)
Alteração
Notificação
• Publish / Subscribe• Modelos Push / Pull• java.util.Observer• java.util.Observabl
e
![Page 17: Padrões de Projeto. Padrões Padrões de Projeto Padrões de Padrões Acoplamento Coesão Reuso de classes e objetos Interface x Implementação Herança de](https://reader035.vdocuments.com.br/reader035/viewer/2022081419/552fc181497959413d8f2677/html5/thumbnails/17.jpg)
State
Padrões de Projeto
• Alterar comportamento sem alterar classe
![Page 18: Padrões de Projeto. Padrões Padrões de Projeto Padrões de Padrões Acoplamento Coesão Reuso de classes e objetos Interface x Implementação Herança de](https://reader035.vdocuments.com.br/reader035/viewer/2022081419/552fc181497959413d8f2677/html5/thumbnails/18.jpg)
Strategy
Padrões de Projeto
• Definir algorítmos intercambiáveis
![Page 19: Padrões de Projeto. Padrões Padrões de Projeto Padrões de Padrões Acoplamento Coesão Reuso de classes e objetos Interface x Implementação Herança de](https://reader035.vdocuments.com.br/reader035/viewer/2022081419/552fc181497959413d8f2677/html5/thumbnails/19.jpg)
Padrões de Projeto
Visitor
• Isolar operações do modelo– Evita “poluição” do
modelo.– Permite adicionar
novas operações sem alterar o modelo
– Alterações no modelo, entretanto, podem ser trabalhosas
![Page 20: Padrões de Projeto. Padrões Padrões de Projeto Padrões de Padrões Acoplamento Coesão Reuso de classes e objetos Interface x Implementação Herança de](https://reader035.vdocuments.com.br/reader035/viewer/2022081419/552fc181497959413d8f2677/html5/thumbnails/20.jpg)
Combos
• Singleton + [Abstract] Factory• Command + Composite + Decorator• DAO (Value Object + Abstract Factory +
Broker)
Padrões de Projeto
![Page 21: Padrões de Projeto. Padrões Padrões de Projeto Padrões de Padrões Acoplamento Coesão Reuso de classes e objetos Interface x Implementação Herança de](https://reader035.vdocuments.com.br/reader035/viewer/2022081419/552fc181497959413d8f2677/html5/thumbnails/21.jpg)
Anti-patterns
• Big Ball Of Mud• Gas Factory• Interface Bloat• God Object• Magic Pushbutton• Object Orgy• Accidental
Complexity
Padrões de Projeto
http://c2.com/cgi/wiki?AntiPatternhttp://www.manning.com/tate/
![Page 22: Padrões de Projeto. Padrões Padrões de Projeto Padrões de Padrões Acoplamento Coesão Reuso de classes e objetos Interface x Implementação Herança de](https://reader035.vdocuments.com.br/reader035/viewer/2022081419/552fc181497959413d8f2677/html5/thumbnails/22.jpg)
Padrões de Projeto
Dúvidas?