bridge

Padrão Bridge

Padrão Bridge: Construindo pontes entre Classes

O Padrão Bridge é usado quando precisamos desacoplar uma abstração de sua implementação para que as duas classes possam ser modificadas independentemente. Este é um padrão estrutural pois desacopla uma classe de implementação de uma classe de abstração criando uma estrutura de ponte entre elas.

Este padrão envolve uma interface que age como uma ponte que faz a funcionalidade de classes concretas independente da interface de classes de implementação. Os dois tipos de classes podem ser alterados estruturalmente sem afetarem umas as outras.

A primeira vista, o Padrão Bridge parece muito como o Padrão Adapter, já que uma classe é usada para converter um tipo de interface em outro. Contudo, o intento do Padrão Adapter é criar uma ou mais interfaces de classes se parecerem a mesma de uma classe em particular. Já o Padrão Bridge é desenvolvido para separar a interface  de uma classe de sua implementação, para que se possa alterar a implementação sem modificar o código do cliente.

O Padrão Bridge é como se fosse a aplicação de um conselho antigo: “prefira composição em vez de herança”. Podemos exemplificar com uma hierarquia de Formas Coloridas. Você não criaria subclasses da classe Forma, com Retangulo e Circulo e então criaria subclasses de Retangulo como RetanguloVermelho, RetanguloAzul e RetanguloVerde, certo? Da mesma forma, também não faria isso para Circulo. Seria melhor dizer que cada Forma POSSUI uma Cor e implementar uma hierarquia de cores, este é o Padrão Bridge.

Ilustrando:

Onde vc possuísse este cenário:

exemplo1

 

Passaria a ter este cenário:

exemplo2

Note que Cor é uma interface e Vermelho e Azul são classes concretas.

Estrutura

Itens da Estrutura do Padrão Bridge:

  • Abstração (classe abstrata): Define a interface de abstração e mantém uma referência a um objeto Implementador.
  • AbstracãoRefinada (classe normal): Estende a interface definida por Abstração.
  • Implementador (interface): Define a interface para classes de implementação. Normlamente, a interface de implementação fornece apenas operações primitivas, legando à abstração a responsabilidade de definir operações de alto nível baseadas nestas primitivas.
  • ImplementadorConcreto (classe normal): Implementa a interface do Implementador.

Aplicabilidade

  • Evitar ligação permanente entre a interface e a implementação.
  • Sempre que uma alteração na implementação não puder afetar clientes.
  • Quando implementações forem compartilhadas entre objetos desconhecidos do cliente.

Vantagens

  • Separa interface de implementação;
  • Melhor hierarquia de abstração e Implementação;
  • Ocultar detalhes de implementação dos clientes.

 

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">