Bridge × Strategy
Dois padrões que costumam ser trocados um pelo outro, e o que de fato os separa.
Em uma frase
Mecanicamente 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).
Critério a critério
Qual a escala?
- Bridge
- Duas árvores de tipos, cada uma com seus próprios subtipos.
- Strategy
- Um ponto de variação, muitas vezes um método só.
Quando se decide usar?
- Bridge
- No projeto, antecipando duas dimensões que vão crescer.
- Strategy
- Quando um condicional sobre variações começa a incomodar.
O que se ganha?
- Bridge
- Crescimento em soma (M+N) no lugar de produto (M×N).
- Strategy
- Trocar o algoritmo sem tocar em quem o usa.
Quando escolher cada um
Bridge
O conceito varia em duas dimensões independentes e você vê classes com nomes compostos.
Ver o conceito completoPor que confundem
Como o Bridge usa composição igual ao Strategy, é comum chamá-lo de 'Strategy grande'. A diferença que importa é se o outro lado é uma hierarquia com vida própria — canais de entrega, drivers de banco, plataformas de renderização — ou apenas variações de um cálculo.