DESIGN PATTERNS

Padrões de arquitetura que aplico em projetos reais com exemplos do meu dia a dia

01

BACKEND REPOSITORY PATTERN

PROBLEMA

Acoplamento direto entre lógica de negócio e camada de dados

BENEFÍCIOS
TestabilidadeDesacoplamentoSubstituibilidade de banco sem tocar no domínio
02

BACKEND STRATEGY PATTERN

PROBLEMA

Múltiplos métodos de pagamento com lógicas completamente diferentes

BENEFÍCIOS
Elimina if/else giganteOpen/Closed PrincipleFácil adicionar novo método de pagamento
03

FRONTEND COMPOSITION PATTERN

PROBLEMA

Props drilling e componentes acoplados, padrão que uso no dia a dia no React

BENEFÍCIOS
Zero prop drillingSRP por sub-componenteAPI flexível e estável
04

FRONTEND CUSTOM HOOKS

PROBLEMA

Lógica de fetch duplicada em vários componentes

BENEFÍCIOS
ReusabilidadeComponente focado em apresentaçãoFácil de testar
05

BACKEND ADAPTER PATTERN

PROBLEMA

Integração com múltiplas APIs externas com interfaces completamente diferentes, SERPRO, Azure, gateways de pagamento

BENEFÍCIOS
Trocar gateway sem tocar no domínioDesacoplamentoTestabilidade com mock
06

BACKEND OBSERVER / EVENT-DRIVEN

PROBLEMA

Cancelamento de agendamento precisava disparar SMS, notificar instrutor e processar estorno, tudo acoplado no mesmo método

BENEFÍCIOS
Domínio sem dependências externasAdicionar comportamento sem modificar código existenteCada handler testado isoladamente
07

ARCHITECTURE CLEAN ARCHITECTURE / HEXAGONAL

PROBLEMA

Domínio contaminado com detalhes de banco, framework e APIs externas, difícil de testar e de evoluir

BENEFÍCIOS
Domínio testável sem banco nem HTTPTrocar Prisma por outro ORM sem tocar no domínioBaixo acoplamento entre camadas
08

ARCHITECTURE DDD, AGGREGATES & VALUE OBJECTS

PROBLEMA

Regras de negócio espalhadas em services e controllers, validação de CPF em 5 lugares diferentes

BENEFÍCIOS
Invariantes garantidas pelo domínioImpossível ter estado inválidoRegras no lugar certo
09

ARCHITECTURE SOLID NO FRONTEND

PROBLEMA

Componentes com múltiplas responsabilidades, busca dados, valida, formata e renderiza tudo junto

BENEFÍCIOS
Componente testávelLógica reutilizávelFácil de mockar nos testes