Comparações
Os pares que mais se confundem, resolvidos lado a lado.
- Proxy×DecoratorOs dois embrulham um objeto mantendo a interface. O Decorator acrescenta comportamento que o cliente pediu; o Proxy controla se a chamada chega ao destino, e o cliente costuma nem saber que ele existe.5 critérios
- Strategy×Template MethodAmbos isolam a parte que varia de um algoritmo. Strategy varia por composição, trocável em tempo de execução; Template Method varia por herança, fixado em tempo de compilação.5 critérios
- Mediator×ObserverOs dois reduzem acoplamento entre componentes. A diferença é onde mora a regra: no Observer cada observador decide sozinho o que fazer; no Mediator a decisão é centralizada em um lugar só.4 critérios
- Adapter×FacadeAdapter é sobre compatibilidade: traduz uma interface que existe para outra que o cliente espera. Facade é sobre conveniência: cria uma interface nova e menor sobre várias peças.4 critérios
- Composite×DecoratorOs dois compõem objetos da mesma interface recursivamente. O Composite agrupa N filhos para representar uma hierarquia; o Decorator embrulha um objeto para acrescentar comportamento.3 critérios
- Bridge×StrategyMecanicamente parecidos: os dois delegam para um objeto injetado. Strategy é uma decisão local (um algoritmo dentro de um objeto); Bridge é uma decisão estrutural (duas hierarquias inteiras que evoluem em separado).3 critérios
- State×StrategyEstruturalmente gêmeos. No Strategy quem escolhe é o cliente, e as opções não se conhecem; no State quem decide a próxima é o próprio estado, que conhece os outros.4 critérios
- Factory Method×Abstract FactoryFactory Method cria um produto e a variação vem de herança — a subclasse decide o que instanciar. Abstract Factory cria uma família de produtos que precisam combinar entre si, e a variação vem de composição — você injeta a fábrica inteira.6 critérios
- CQS (Command Query Separation)×CQRS (Command Query Responsibility Segregation)CQS é uma regra sobre métodos: ou muda o estado, ou devolve resposta — nunca os dois. CQRS leva a mesma ideia para a arquitetura: dois modelos separados, com caminhos, e às vezes bancos, distintos para leitura e escrita. Um cabe numa classe; o outro muda o desenho do sistema.6 critérios
- Arquitetura Hexagonal×Clean ArchitectureOs dois isolam o domínio das ferramentas pela mesma regra: a dependência aponta para dentro. Hexagonal fala em portas e adaptadores e não conta anéis; Clean Architecture desenha camadas concêntricas e nomeia cada uma. Na essência são o mesmo princípio — a diferença é de vocabulário e de quanto a estrutura é prescritiva.4 critérios
- Saga×Two-Phase Commit (2PC)Os dois coordenam uma operação que cruza vários sistemas. O 2PC busca atomicidade travada: todos preparam, travam e commitam juntos. A Saga aceita consistência eventual: cada passo commita na hora, e uma falha é desfeita por compensação. Um trava para garantir; o outro não trava e conserta depois.5 critérios
- Microsserviços×Monólito modularOs dois defendem fronteiras claras entre módulos — a diferença é se essas fronteiras são físicas ou lógicas. Microsserviços separam por processo e rede (deploy e banco por serviço); o monólito modular separa por módulo dentro de um processo só. O primeiro compra autonomia pagando complexidade distribuída; o segundo mantém a simplicidade de um deploy.5 critérios
- Command×MementoOs dois aparecem no undo — e é aí que se confundem. Command encapsula a operação (fazer / desfazer); Memento guarda o estado anterior para restaurar. Um é verbo; o outro é foto.5 critérios
- CQRS (Command Query Responsibility Segregation)×Event SourcingCQRS separa modelo de escrita e de leitura. Event Sourcing guarda a escrita como sequência de eventos. Dá para ter um sem o outro — e a confusão nasce porque o combo é popular.4 critérios
- API Gateway×Backend for Frontend (BFF)Os dois ficam na borda. API Gateway é porta compartilhada (auth, rate limit, roteamento). BFF é API moldada para uma experiência de cliente.4 critérios
- Repository×Unit of WorkRepository é a coleção de um agregado ('me dê o Pedido 42'). Unit of Work é a transação que rastreia o que mudou e grava tudo de uma vez.4 critérios
- Autenticação×JWTAutenticação é o ato de provar identidade (sessão + cookie httpOnly é o default web). JWT é um formato de credencial assinada — útil como access token, péssimo como desculpa para token eterno no localStorage.5 critérios
- Autenticação×Autorização (RBAC e guards)Autenticação responde *quem é*; autorização responde *o que pode*. Login não é permissão — e `if (user)` não é RBAC.4 critérios
- Autenticação×OAuth 2.0Autenticação própria prova identidade no *seu* sistema. OAuth 2 delega autorização de acesso (e, com OIDC, identidade) a um IdP — sem a senha do usuário no seu form.4 critérios
- Allowlist×Rate limitingAllowlist corta por *quem/onde* (origem, IP, URI): default deny. Rate limiting corta por *quanto*: volume acima do orçamento. Um não substitui o outro.4 critérios