Design Patterns
Quem são? Onde vivem? O que comem?
Breve Histórico
- Christopher Alexander
-
The Gang of Four
- Erich Gamma
- Richard Helm
- Ralph Johnson
- John Vlissides
O que são design patterns?
- “Um design pattern nomeia, abstrai e identifica os aspectos chave de uma estrutura de projeto comum para torná-la útil para a criação de um projeto orientado a objetos reutilizável” (GoF)
- 4 elementos essenciais:
- Nome
- Problema
- Solução
- Consequências
- Solução simples para problemas específicos
Criação
Estruturais
Comportamentais
Singleton
- Garante que cada classe tenha apenas uma instancia
- Útil quando não é preciso se preocupar com o estado do objeto
Factory Method
- Definir uma interface para criar um objeto, deixando as subclasses decidirem qual classe instanciar
- Reforça o encapsulamento
Factory Method
Facade
- Representar um subsistema através de uma interface
- Aplicação de padrões = mais e menores classes
- Anticorruption Layer
Facade
Facade
Adapter
- Converte uma interface em outra, esperada pelos clientes
- Ajuda no desacoplamento
Adapter
Template Method
- Define um esqueleto de um algoritmo, postergando alguns passos para as subclasses
- Usa herança para varia parte de um algoritmo
Template method
Strategy
- Encapsula um algoritmo em um objeto
- Similar ao template method exceto em sua granularidade
Strategy
Por que utilizar?
- Flexibilidade
- Expressividade
- Reusabilidade
- Vocabulário Comum
Design Stamina Hypothesis
Dificuldades de uso
- Projetos monolíticos
- Sistemas orientados a banco de dados
- Tempo entrega x Tempo manutenção
Quando não usar
- Projetos em linguagens não orientadas a objetos
- Sistemas muito simples e pontuais
- Legado muito engessado
Recomendações
Obrigado!
Design Patterns
By Lucas Rodrigues
Design Patterns
- 324