O que são Design Patterns?

Os 23 padrões catalogados por Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides — conhecidos como Gang of Four ou GoF — organizam soluções recorrentes em três grupos: criacionais, estruturais e comportamentais. Eles oferecem vocabulário compartilhado para conversar sobre composição, criação de objetos e colaboração entre responsabilidades.

Um padrão não substitui entendimento do domínio. Use-o quando o problema descrito realmente existe, avalie o custo de indireção e prefira uma solução simples quando ela explica melhor a intenção. Para os princípios de dependência que ajudam a avaliar essas escolhas, veja também Clean Architecture e SOLID na prática.

Padrões criacionais

Tratam de como criar objetos sem espalhar decisões de construção pelo sistema.

  • Abstract Factory — cria famílias de objetos relacionados.
  • Builder — constrói objetos complexos em etapas.
  • Factory Method — delega a subclasses a escolha do produto concreto.
  • Prototype — cria objetos a partir da cópia de protótipos.
  • Singleton — limita uma classe a uma instância acessível.

Padrões estruturais

Organizam objetos e classes para compor estruturas maiores com limites claros.

  • Adapter — adapta uma interface incompatível a outra esperada.
  • Bridge — separa abstração de implementação para evoluírem independentemente.
  • Composite — trata objetos individuais e composições de forma uniforme.
  • Decorator — adiciona responsabilidades por composição.
  • Facade — oferece uma entrada simples para um subsistema.
  • Flyweight — compartilha estado intrínseco para reduzir memória.
  • Proxy — controla o acesso a outro objeto.

Padrões comportamentais

Descrevem colaboração, fluxo de controle e distribuição de responsabilidades.

  • Chain of Responsibility — passa uma solicitação por possíveis handlers.
  • Command — encapsula uma solicitação como objeto.
  • Interpreter — representa e avalia uma pequena linguagem.
  • Iterator — percorre uma coleção sem expor sua estrutura.
  • Mediator — centraliza a coordenação entre colegas.
  • Memento — captura e restaura estado sem expor detalhes internos.
  • Observer — notifica assinantes sobre mudanças de estado.
  • State — varia o comportamento conforme o estado interno.
  • Strategy — troca algoritmos por trás de um contrato comum.
  • Template Method — define o esqueleto de um algoritmo e permite etapas variáveis.
  • Visitor — adiciona operações a uma estrutura de tipos sem alterar seus elementos.

Como estudar e escolher um padrão

Comece pelo problema, não pelo nome. Pergunte o que muda, quem conhece quem, qual acoplamento está difícil de manter e se uma função ou composição simples já resolve. Depois compare os padrões relacionados: Strategy e State, por exemplo, usam composição de forma parecida, mas representam intenções diferentes. Cada página desta série explica essas distinções e liga a conceitos complementares.