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 completo

Strategy

Há uma família de algoritmos intercambiáveis para o mesmo trabalho.

Ver o conceito completo

Por 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.