Vous êtes sur la page 1sur 15

Padro Bridge

Definio
uma estrutura padro Usado para formar grandes estruturas de objetos em vrios objetos diferentes Segundo o livro do Gang of Four: Desacoplar uma abstrao da sua implementao para que os dois possam variar independentemente. A hierarquia que define os tipos de janelas separada da hierarquia que contm a implementao.

Objetivo
Desacoplar uma abstrao da sua implementao de forma a que a implementao possa ser facilmente trocada, ou seja, para que tanto a abstrao como a implementao possam variar independentemente.

Soluo
Encapsular os detalhes da implementao num objeto que pertence abstrao

Aplicabilidade
til quando se tem uma abstrao que tem diferentes implementaes

Exemplo
Considerando a construo de um mdulo para desenhar figuras
Considere-se que h 2 classes externas de desenho a serem utilizadas: DP1 e DP2 Na 1verso apenas devem ser desenhados rectngulos (definidos com dois pares de pontos)
DP1 Rectngulos drawLine(x1,y1,x2,y2) DP2 drawLine(x1,y1,x2,y2)

Circulos

drawCircle(x,y,r)

DrawCircle(x,y,r)

Exemplo (Diagrama de classes soluo exemplo)

Exemplo
Supondo que agora que eram fornecidos novos requisitos:
As classes externas agora desenham crculos. Portanto, agora o mdulo de desenho deve ter agora a possibilidade de desenhar circulos Alm disso, o cliente do mdulo de desenho no precisa saber a diferena entre um retngulo e um circulo

Soluo
Criar uma classe Shape e torn-la superclasse das classes Rectangle e Circle Agora o cliente comunica-se com objetos Shape

Exemplo (Diagrama de classes da nova soluo exemplo)

Exemplo (Problemas da nova soluo)


Observando a 3linha do diagrama de classes:
Esto representadas 4 classes como tipos especficos de Shape E se houver um outro programa de desenho?
Sero 6 tipos diferentes de Shape

No uma boa soluo Isto iria originar uma exploso de classes, ou seja, a abstrao (tipos de Shape) e a implementao (programas de desenho) esto fortemente acoplados. Pretende-se que eles sejam independentes

Exemplo: Objetivo

Abstrao 1
Abstrao 2 Abstrao 3

Implementao 1
Implementao 2 Implementao 3

Exemplo: Soluo
Para se fazer uso do padro Bridge, neste caso, cria-se a classe Drawing utilizada pela classe Shape para definir o que pretende desenhar (linha ou circulo)

Bridge: Estrutura Bsica

Bridge: Vantagens
O projeto e a implementao so mais robustos e mais flexveis s mudanas futuras quando se usa o padro

Bridge: Desvantagens
Ao proporcionar flexibilidade, aumenta a complexidade