Por que separar?
Se relatórios podem ser PDF ou HTML e também ser enviados por e-mail ou salvos em disco, herança pode levar a quatro classes combinadas. Ao crescerem as dimensões, as combinações multiplicam-se. Bridge transforma uma delas em colaboração composta.
Exemplo em C#
public interface IExportador { string Exportar(string texto); }
public sealed class ExportadorHtml : IExportador
{
public string Exportar(string texto) => $"<p>{texto}</p>";
}
public abstract class Relatorio(IExportador exportador)
{
public string Gerar(string dados) => exportador.Exportar(dados);
}Subtipos de relatório podem variar sem conhecer a formatação concreta, e novos exportadores podem ser adicionados sem multiplicar cada tipo de relatório.
Trade-offs
A abstração adicional é valiosa quando ambas as dimensões realmente mudam. Se há apenas uma implementação estável, pode ser complexidade desnecessária. Bridge costuma usar composição; compare com Adapter, que adapta uma interface já existente, e com Abstract Factory, que cria famílias compatíveis. Consulte o catálogo completo.