Padrões de Projeto. Padrões Padrões de Projeto Padrões de Padrões Acoplamento Coesão Reuso de...
Transcript of Padrões de Projeto. Padrões Padrões de Projeto Padrões de Padrões Acoplamento Coesão Reuso de...
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?