| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/06/2010 18:13:25
|
VictorAJ
Thread.start()
![[Avatar]](/images/avatar/dfff7bcc19538d61e4324a67cc8cd86d.jpg)
Membro desde: 20/05/2009 14:54:07
Mensagens: 38
Offline
|
Pessoal, estou estudando Design Patterns, e estava indo bem, até encontrar o padrão Bridge. Eu até entendi o porquê dele existir, só não vejo o porquê de usa-lo, logo, concluo que eu não entendi o espírito da coisa. Eu procurei aqui no fórum, mas a maioria dos exemplos é usando como exemplos as classes AWT ou implementações de Drivers JDBC. Sinceramente acho que esses tipos de exemplos pouco ajudam. Sempre tento pegar exemplos o mais próximo possível do mundo real, pois ajuda muito atender (por exemplo, o padrão Adapter, só consegui mesmo entender, quando comecei a pensar em como seria um adaptador de um câmbio automático para um câmbio de cinco marchas). Então, pergunto: alguém aqui tem algum exemplo de padrão Bridge, sem ser JDBC, AWT, ou qualquer outra coisa que não temos no mundo real? Eu até tentei usar como exemplo a implementação de um motor (sempre carros! rs!), pensei no seguinte:
Eu tenho um classe abstrata chamada MOTOR. Eu posso ligar um motor, acelerar e desligar. Ou seja, eu teria:
Motor
ligar()
acelerar()
desligar()
Blz. Aí vamos supor que agora eu tenha que ter dois tipos de motores concretos: um motor elétrico (MotorEletrico) e um motor a explosão (MotorExplosao). Vamos supor que o comportamento de ligar, acelerar e desligar desses motores sejam totalmente diferentes um do outro. Ora, eu consigo resolver isso facilmente com herança. Faço MotorEletrico e MotorExplosao herdar da classe Motor e um abraço! Implemento os métodos de cada motor.
Pergunto: Por que eu iria querer usar o Bridge!?
Quem souber me explicar, pois realmente, eu não tô conseguindo entender a utilidade disso ainda...
Desde já, agradeço!
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 29/06/2010 19:04:04
|
VictorAJ
Thread.start()
![[Avatar]](/images/avatar/dfff7bcc19538d61e4324a67cc8cd86d.jpg)
Membro desde: 20/05/2009 14:54:07
Mensagens: 38
Offline
|
Pessoal,
Acho que finalmente consegui entender e implementar o padrão no exemplo que dei acima. Alguém poderia corrigir?
Entendi também o porquê desse padrão: como a implementação da classe fica por conta de outra classe, eu poderia alterar o comportamento com muito mais facilidade, sem ter que afetar minhas classes ancestrais... bom, acho que é isso.
Gostaria que alguém desse uma olhadinha nos arquivos em anexo, e verificasse, pra ver se eu implementei certo.
Grato desde já.
| Nome do arquivo |
bridge.zip |
Download
|
| Descrição |
|
| Tamanho |
2 Kbytes
|
| Baixado: |
149 vez(es) |
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/06/2010 14:27:51
|
VictorAJ
Thread.start()
![[Avatar]](/images/avatar/dfff7bcc19538d61e4324a67cc8cd86d.jpg)
Membro desde: 20/05/2009 14:54:07
Mensagens: 38
Offline
|
Caraca, ninguém!?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/06/2010 15:38:17
|
sergiotaborda
GUJ Expert
![[Avatar]](/images/avatar/b4a0e0fbaa9f16d8947c49f4e610b549.png)
Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline
|
Pergunto: Por que eu iria querer usar o Bridge!?
O padrão responde a isso. Se vc não sabe a resposta isto vc não entendeu o padrão.
A primeira linha do padrão explica porque usar : desacoplar contrato de implementação tal que ambos possam evoluir em separado.
|
Criando sua própria API de Validação
Blog do MiddleHeaven |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/06/2010 15:42:51
|
VictorAJ
Thread.start()
![[Avatar]](/images/avatar/dfff7bcc19538d61e4324a67cc8cd86d.jpg)
Membro desde: 20/05/2009 14:54:07
Mensagens: 38
Offline
|
Sim, Sérgio, eu entendi sim. Veja meu segundo post. Até me atrevi a implementar o padrão. Queria saber se está certo o que fiz. Você poderia corrigi-lo? Grato.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/06/2010 15:49:22
|
steveo
Debugger
![[Avatar]](/images/avatar/c8df5710401aee1338a57.gif)
Membro desde: 31/08/2003 00:08:00
Mensagens: 57
Localização: Salvador Bahia
Offline
|
VictorAJ wrote:Sim, Sérgio, eu entendi sim. Veja meu segundo post. Até me atrevi a implementar o padrão. Queria saber se está certo o que fiz. Você poderia corrigi-lo? Grato.
aqui pode encontrar mais:
http://www.oodesign.com/bridge-pattern.html
|
--
Todo mundo tem cliente,só analista de sistemas e traficante que tem usuário. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/06/2010 16:39:39
|
deniswsrosa
GUJ Ranger
![[Avatar]](/images/avatar/28a7602724ba16600d5ccc644c19bf18.jpg)
Membro desde: 21/07/2005 08:51:27
Mensagens: 807
Offline
|
Bridge como o próprio nome diz é uma "ponte".
Imagine a ponte Rio-Niteroi, ela liga lógicamente a cidade do Rio com Niterói.
Ambas as cidades podem derrubar construcoes, criar novas, alterar ruas e etc. Porém a ponte sempre vai estar lá pra levar o pessoal do Rio pra Niterói e de Niterói pro Rio. Não poderia existir nome melhor pra esse patern, pois é exatamente isso que ele faz, no caso do JDBC por exemplo, tanto os provedores de drivers quando a implementação do JDBC podem evoluir sem deixar de se comunicarem.
Foi o suficiente?
|
SCJP, SCEA I
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/06/2010 16:53:41
|
VictorAJ
Thread.start()
![[Avatar]](/images/avatar/dfff7bcc19538d61e4324a67cc8cd86d.jpg)
Membro desde: 20/05/2009 14:54:07
Mensagens: 38
Offline
|
Steveo, valeu pelo link. Aqui no meu trabalho é bloqueado, mas chegando em casa vou dar uma olhada.
Denis, obrigado por responder. O conceito do padrão eu entendi, veja no meu segundo post. Eu gostaria que alguém desse uma olhada no código que escrevi, implementando o padrão (está em anexo, no segundo post). Porque, uma coisa é entender o conceito, outra é implementa-lo "sem colar" de exemplos já prontos. E foi exatamente o que tentei fazer.
Valeu!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/06/2010 17:17:15
|
deniswsrosa
GUJ Ranger
![[Avatar]](/images/avatar/28a7602724ba16600d5ccc644c19bf18.jpg)
Membro desde: 21/07/2005 08:51:27
Mensagens: 807
Offline
|
Cara, desculpa não parar pra ler o seu código (sem tempo), mas quando eu estava estudando pro SCEA o melhor exemplo que encontrei foi o da Wikipedia.
http://en.wikipedia.org/wiki/Bridge_pattern
Olha lá que tem o bridge implementado em java, ruby e scala. Ai basta bater com o seu código e ver se vc está fazendo a mesma coisa.
Abracos!
|
SCJP, SCEA I
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 30/06/2010 17:22:09
|
VictorAJ
Thread.start()
![[Avatar]](/images/avatar/dfff7bcc19538d61e4324a67cc8cd86d.jpg)
Membro desde: 20/05/2009 14:54:07
Mensagens: 38
Offline
|
Valeu Denis!
|
|
|
 |
|
|