Apresentaodesignpatterns1 110109115005-phpapp02

333 visualizações

Publicada em

Learn a bir more about design patterns.

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
333
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
1
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Apresentaodesignpatterns1 110109115005-phpapp02

  1. 1. Design Patterns<br />
  2. 2. Padrão adaptador <br />Se resume em converter uma interface de uma classe para outra interface que o cliente espera encontrar.<br />O adaptador permite que classes com interfaces incompatíveis trabalhem juntas.<br />
  3. 3. Classe A Adaptador Classe B<br />
  4. 4. public interface Pato {<br />publicvoidquack();<br />publicvoidfly();<br /> }<br />
  5. 5. public class PatoBravo implements Pato {<br /> @Override<br />publicvoidquack() {<br /> System.out.println("Quack");<br /> }<br /> @Override<br />publicvoidfly() {<br /> System.out.println("Fly");<br /> }<br />}<br />
  6. 6. public interface Peru {<br />publicvoid gorgolejar();<br />publicvoidfly();<br />}<br />
  7. 7. public class PeruComumimplements Peru {<br /> @Override<br />publicvoid gorgolejar() {<br /> System.out.println("Glu - Glu");<br /> }<br /> @Override<br />publicvoidfly() {<br /> System.out.println("Peru comum voando");<br /> }<br />}<br />
  8. 8. publicclassPeruAdaptadorimplements Pato {<br />private Peru peru;<br />publicPeruAdaptador(Peru peru) {<br />this.peru = peru;<br /> }<br /> @Override<br />publicvoidquack() {<br /> peru.gorgolejar();<br /> }<br /> @Override<br />publicvoidfly() {<br /> for (int i = 0; i < 5; i++) {<br /> peru.fly();<br /> }<br /> }<br />}<br />
  9. 9. publicclassPatoTest {<br /> public static void main(String[] args) {<br />PatoBravopatoBravo = newPatoBravo();<br />PeruComumperuComum= newPeruComum();<br /> Pato peruAdaptado = newPeruAdaptador(peruComum);<br /> System.out.println("Testando peru comum");<br />peruComum.gorgolejar();<br />peruComum.fly();<br /> System.out.println("nTestando o pato bravo");<br />testPato(patoBravo);<br /> System.out.println("nTestando o peru disfarçado de pato");<br />testPato(peruAdaptado);<br />staticvoidtestPato(Pato pato){<br /> pato.quack();<br /> pato.fly();}<br />
  10. 10. Testando peru adaptado<br />Glu - Glu<br /> Peru adaptado<br />Testando o pato bravo <br />Quack<br />Fly<br />Testando o peru disfarçado de pato<br />Glu - Glu<br /> Peru adaptado<br /> Peru adaptado<br /> Peru adaptado<br /> Peru adaptado<br /> Peru adaptado<br />
  11. 11. Existe também o adaptador de classes,<br />porem não é possível utiliza-lo com o java.<br />O motivo é que ele requer herança multipla, o que até então ainda não é possível no java.<br />A principal diferença é que ao invés de utilizar a composição como faz o adaptador de objetos, o adaptador de classes utiliza a herança, assim podendo ter acesso as chamadas do métodos.<br />
  12. 12. Adaptadores do mundo real<br />Enumeration<br />hasMoreElements()<br />nextElement()<br /><ul><li>Iterator</li></ul>hasNext()<br />next()<br /> remove()<br />
  13. 13. public class EnumerationIterator implements Iterator<Object> {<br />privateEnumeration<Object> enumeration;<br />publicEnumerationIterator(Enumeration<Object> enumeration) <br />this.enumeration = enumeration;<br /> @Override<br />publicbooleanhasNext() <br />returnenumeration.hasMoreElements();<br /> @Override<br />publicObjectnext() <br />returnenumeration.nextElement();<br /> @Override<br />publicvoid remove() {<br />thrownewUnsupportedOperationException();<br />}<br />
  14. 14. Obrigado !<br />

×