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.