Académique Documents
Professionnel Documents
Culture Documents
Tpicos abordados
Referncias
Bridge
Bridge
A inteno do Padro de Projeto Bridge desacoplar uma abstrao de sua implementao, de forma que as duas possam variar independentemente De novo
A
inteno do Padro de projeto Bridge desacoplar uma abstrao de sua implementao de tal forma que a implementao possa ser facilmente trocada
Como?
Encapsulando
Motivao
Quando uma abstrao tem varias implementaes possveis, a maneira mais usual de acomod-las usando herana Essa uma abordagem nem sempre muito flexvel
A herana liga uma implementao abstrao permanentemente, o que torna difcil modificar, aumentar e reutilizar abstraes independentemente.
Aplicabilidade
Desejar evitar um vnculo permanente entre uma abstrao e sua implementao Tanto as abstraes como suas implementaes tiverem de ser extensveis por meio de subclasses Mudanas na implementao de uma abstrao no puderem ter impacto sobre os clientes (C++) voc desejar ocultar completamente a implementao de uma abstrao dos clientes Tiver uma proliferao de classes
Desejar compartilhar uma implementao entre mltiplos objetos e este fato deve estar oculto do cliente
Aplicabilidade
O padro Bridge til quando se tem uma abstrao que tem diferentes implementaes
Estrutura
Colaboraes
Consequncias
10
11
Exemplo 1
Bridge Exemplo
12
Para o exemplo as implementaes seriam as classes de Janela das plataformas. Vamos iniciar construindo elas, de maneira bem simples. A primeira classe ser a interface comum a todas as implementaes, chamadas de JanelaImplementor:
Bridge - Exemplo
13
Essa a classe abstrata que vai fornecer uma interface de acesso comum para as abstraes de janelas:
Bridge - Exemplo
14
Vamos ver agora a classe concreta que desenha a janela na plataforma Windows:
Bridge - Exemplo
15
Vamos ver agora a classe concreta que desenha a janela na plataforma Linux:
Bridge - Exemplo
16
Agora veja o exemplo da classe de JanelaDialogo, que abstrai uma janela de dilogo para todas as plataformas:
Bridge - Exemplo
17
Para uma janela de aviso por exemplo, bastaria um boto Ok, ento sua implementao seria algo do tipo:
Bridge - Exemplo
18
19
Exemplo 2
Bridge - Exemplo
20
Para o exemplo as implementaes seriam as classes de uma fbrica de veculos. Inicialmente a fbrica s tem o tipo carro e uma oficina de produo e outra de montagem.
Cliente
Carro
Produzir carro
Montar Carro
Bridge - Exemplo
Problema
Suponha
21
motos
Soluo
A
soluo mais comum seria criamos uma classe abstrata Veiculo, e fazemos com que ela seja superclasse tanto de carro quanto de moto O cliente agora se comunica com objetos Veiculo Sendo assim, temos uma nova soluo
Bridge - Exemplo
Cliente
22
Veiculo
Carro
Moto
Produzir Carro
Montar Carro
Produzir Moto
Montar Moto
Bridge - Exemplo
23
A exploso de classes surge porque, nesta soluo, a abstrao (os tipos de veiculo) e a implementao (tipos de oficina) esto fortemente acoplados. Cada tipo de figura (abstrao) deve saber que tipo de mdulo externo (implementao) ele deve utilizar
Precisamos de um modo de desacoplar as variaes na abstrao das variaes na implementao, de tal forma que o nmero de classes cresa somente linearmente
Bridge - Exemplo
24
Bridge - Exemplo
25
Neste projeto, Veiculo usa oficinas para manifestar seu comportamento, chegamos ao padro Bridge
BRIDGE
Veiculo
Oficina
Carro
Moto
Produzir
Montar
Diagrama de classes nova soluo exemplo Padro de Projeto Bridge, com padro aplicado
26
Referncias
Referncias
27
Gamma,E., Johnson, R., Helm, R ., Vlissides, J., Padres de Projeto, Solues Reutilizveis em Software
Padres de Projeto - Bridge http://brizeno.wordpress.com/category/padroes-de-projeto/bridge/ Bridge Pattern - Wikipdia - http://en.wikipedia.org/wiki/Bridge_pattern Bridge Design Pattern - http://javapapers.com/design-patterns/bridgedesign-pattern/ Padres de Projeto - Adapter, Proxy, Composite e Bridge: Bridge ( Lorran Pegoretti, Luiz Marcon Universidade Vila Velha ) http://www.slideshare.net/lorran33/padres-de-projeto-adapter-proxycomposite-e-bridge?from_search=9
28
Obrigado!