“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