Upload
internet
View
135
Download
2
Embed Size (px)
Citation preview
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 classe x Herança de
interface• Composição x Herança• Delegação
Padrões de Projeto
Padrões abordados
• Singleton• Prototype• Factory Method• Abstract Factory• Adapter• Composite• Decorator• Facade
• Proxy• Command• Observer• State• Strategy• Visitor
Padrões de Projeto
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
Prototype
• Clonagem• Fundo (deep ) x Raso
(shallow)• Collections• Transients
Padrões de Projeto
Factory Method
• Criar objetos sem especificar a classe concreta
• Polimórficos ou não
Padrões de Projeto
Abstract Factory
• Criar familias de objetos relacionados• Independência da camada abaixo• Custo de complexidade
Padrões de Projeto
Abstract Factory
Padrões de Projeto
Adapter
• Reuso quando uma interface diferente é esperada
Padrões de Projeto
Composite
• Estruturas parte-todo (árvore)
Padrões de Projeto
Decorator
Padrões de Projeto
• Adicionar responsabilidade sem adicionar dependência
Facade
Padrões de Projeto
• Isolar o cliente da complexidade de um subsistema
Proxy
Padrões de Projeto
• “Super” referência– Remoting– Lazy– Secure …
• Dynamic Proxy– Interface implementada
em runtime– InvocationHandler
Command
• Execução flexível– Agendamento– Enfileiramento– Persistência– Compensação– Composição
Padrões de Projeto
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
State
Padrões de Projeto
• Alterar comportamento sem alterar classe
Strategy
Padrões de Projeto
• Definir algorítmos intercambiáveis
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
Combos
• Singleton + [Abstract] Factory• Command + Composite + Decorator• DAO (Value Object + Abstract Factory +
Broker)
Padrões de Projeto
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/
Padrões de Projeto
Dúvidas?