Eu fui falar com meu professor sobre bridge, e ele me falo que não é apenas criar uma classe abstrata, e que tem mais do que isso, bem que legal, so que eu nao consegui entender como mais podeira fazer isso.
Alguem pode me explicar como?
Eu fui falar com meu professor sobre bridge, e ele me falo que não é apenas criar uma classe abstrata, e que tem mais do que isso, bem que legal, so que eu nao consegui entender como mais podeira fazer isso.
Alguem pode me explicar como?
Amigo, eu ja li esses tutoriais, mas boiei, so entendi que da para fazer com uma classe abstrata, meu prof disse que tem mais coisa do que so criar uma classe abstrata, quero saber oque mais da pra fazer para implementar o bridge.
A idéia do “bridge” não é criar uma classe abstrata (só isso não resolve); na verdade, não é necessário nem conveniente usar uma classe abstrata. É melhor usar interfaces.
Leia o exemplo que está no artigo da Wikipedia em inglês; ele está em Java e descreve exatamente o que se deve fazer para implementar convenientemente o “design pattern” Bridge. Não consigo dar um exemplo melhor.
A motivação para usar “bridge” é quando você tem algo que pode ser implementado de várias maneiras, mas você quer ter uma interface padronizada para isso.
Um exemplo é o JDBC.
Você tem uma interface padronizada (Connection, Statement etc.), mas que pode ser implementado de formas diferentes (pelo driver) conforme o banco de dados ao qual você quer se conectar.
O JDBC, conforme você pode ter visto, é um exemplo clássico de “Bridge”, porque tanto a interface (o JDBC) quanto a implementação (o driver) variam de uma versão para outra do Java. Quando você quer usar algo no JDBC que não está implementado no driver, em vez de o driver não carregar, ele joga uma exceção para você (NotImplemented) mas o resto continua funcionando OK.
Nossa, isso esta interessante.
Bem, eu vu tentar entender melhor o exemplo do wikipedia, e agrdeço a todos que tentaram me ajudar.
So que tem um probleminha, eu estou aprendendo agora usar interfaces, entao ainda boio nela.
Mas vamos ver se eu entendi
Supondo o exemplo do driver de conexao, teríamos uma interface para isso.
E cada tipo de conexao, select por exemplo, teríamos uma classe que implementaria essa interface
Para asism fica
Conexao con = new ConexaoSelect();
por exemplo, sendo que o Conexao é uma interface e o ConexaoSelect é uma classe?
Seria isso?
Mais uma coisa, alguem tem ou poderia fazer algum código bem bobo assim que usasse bridge, mas um do tipo que so tivesse bridge, sem mais nada, so um exemplo simples de bridge.
Agradeço a todos.
Um bom exemplo para Bridge é o tutorial que o thingol indicou (em inglês).
Eu sempre ouvi falar desse tal bridge, mas depois de ler esse tutorial creio que ficou mais claro.
Thingol, só pra firmar os conceitos, me ajuda aí se algo não estiver correto:
Shape, que á a abstração, é a ponte que separa a implementação do, digamos, implementador (interface)?
Então nesse caso, um objeto CircleShape tem o poder de usar o método “drawCircle” de sua referencia (DrawingAPI), através do método proposto pela sua interface Shape.
Ou seja, através do método “draw”, assinado na interface Shape, o objeto CircleShape executa por trás o “drawCircle” de sua referência DrawingAPI.
E aí que está a “chave” do pattern Bridge?
[]´s
A ponte tem pelo menos duas interfaces(ou classes abstratas), o Abstraction e o Implementor. Os dois juntos são a ponte.
Todas as subclasses de Shape fazem as suas chamadas em termos de DrawingAPI. Elas não tem idéia das classes concretas de DrawingAPI. As subclasses de Shape podem mudar sua implementação e DrawingAPI não vai quebrar, as classes de DrawingAPI podem mudar suas implementações, mantendo seus contratos, mas os Shapes não vão quebrar.
Bridge é sobre como lidar com duas hierarquias de classes e mantê-las independentes.