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

  • 272