22
Padrões de Projeto

Padrões de Projeto

  • Upload
    perry

  • View
    36

  • Download
    0

Embed Size (px)

DESCRIPTION

Padrões de Projeto. Padrões. 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 abordados. Singleton Prototype Factory Method Abstract Factory Adapter - PowerPoint PPT Presentation

Citation preview

Page 1: Padrões de Projeto

Padrões de Projeto

Page 2: Padrões de Projeto

PadrõesPadrões de Projeto

Page 3: 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

Page 4: 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

Page 5: 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

Page 6: Padrões de Projeto

Prototype• Clonagem• Fundo (deep ) x Raso

(shallow)• Collections• Transients

Padrões de Projeto

Page 7: Padrões de Projeto

Factory Method• Criar objetos sem especificar a classe

concreta• Polimórficos ou não

Padrões de Projeto

Page 8: Padrões de Projeto

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

Abstract FactoryPadrões de Projeto

Page 10: Padrões de Projeto

Adapter

• Reuso quando uma interface diferente é esperada

Padrões de Projeto

Page 11: Padrões de Projeto

Composite• Estruturas parte-todo (árvore)

Padrões de Projeto

Page 12: Padrões de Projeto

DecoratorPadrões de Projeto

• Adicionar responsabilidade sem adicionar dependência

Page 13: Padrões de Projeto

FacadePadrões de Projeto

• Isolar o cliente da complexidade de um subsistema

Page 14: Padrões de Projeto

ProxyPadrões de Projeto

• “Super” referência– Remoting– Lazy– Secure …

• Dynamic Proxy– Interface implementada

em runtime– InvocationHandler

Page 15: Padrões de Projeto

Command• Execução flexível

– Agendamento– Enfileiramento– Persistência– Compensação– Composição

Padrões de Projeto

Page 16: Padrões de Projeto

Observer

T Va 10 45b 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

StatePadrões de Projeto

• Alterar comportamento sem alterar classe

Page 18: Padrões de Projeto

StrategyPadrões de Projeto

• Definir algorítmos intercambiáveis

Page 19: Padrões de Projeto

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

Combos• Singleton + [Abstract] Factory• Command + Composite + Decorator• DAO (Value Object + Abstract Factory +

Broker)

Padrões de Projeto

Page 21: 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/

Page 22: Padrões de Projeto

Padrões de Projeto

Dúvidas?