Apresentação Design Adaptador
Click here to load reader
-
Upload
robson-santiago -
Category
Documents
-
view
1.082 -
download
2
Transcript of Apresentação Design Adaptador
![Page 1: Apresentação Design Adaptador](https://reader037.fdocumentos.tips/reader037/viewer/2022100602/558e242f1a28ab62048b4628/html5/thumbnails/1.jpg)
Design Patterns
![Page 2: Apresentação Design Adaptador](https://reader037.fdocumentos.tips/reader037/viewer/2022100602/558e242f1a28ab62048b4628/html5/thumbnails/2.jpg)
Padrão adaptador
Se resume em converter uma interface de uma classe para outra interface que o cliente espera encontrar.
O adaptador permite que classes com interfaces incompatíveis trabalhem juntas.
![Page 3: Apresentação Design Adaptador](https://reader037.fdocumentos.tips/reader037/viewer/2022100602/558e242f1a28ab62048b4628/html5/thumbnails/3.jpg)
Classe A Adaptador Classe B
![Page 4: Apresentação Design Adaptador](https://reader037.fdocumentos.tips/reader037/viewer/2022100602/558e242f1a28ab62048b4628/html5/thumbnails/4.jpg)
public interface Pato {
public void quack();
public void fly();
}
![Page 5: Apresentação Design Adaptador](https://reader037.fdocumentos.tips/reader037/viewer/2022100602/558e242f1a28ab62048b4628/html5/thumbnails/5.jpg)
public class PatoBravo implements Pato {
@Overridepublic void quack() {
System.out.println("Quack");}
@Overridepublic void fly() {
System.out.println("Fly");}
}
![Page 6: Apresentação Design Adaptador](https://reader037.fdocumentos.tips/reader037/viewer/2022100602/558e242f1a28ab62048b4628/html5/thumbnails/6.jpg)
public interface Peru {
public void gorgolejar();
public void fly();}
![Page 7: Apresentação Design Adaptador](https://reader037.fdocumentos.tips/reader037/viewer/2022100602/558e242f1a28ab62048b4628/html5/thumbnails/7.jpg)
public class PeruComum implements Peru {
@Overridepublic void gorgolejar() {System.out.println("Glu - Glu");}
@Overridepublic void fly() {System.out.println("Peru comum voando");}
}
![Page 8: Apresentação Design Adaptador](https://reader037.fdocumentos.tips/reader037/viewer/2022100602/558e242f1a28ab62048b4628/html5/thumbnails/8.jpg)
public class PeruAdaptador implements Pato {
private Peru peru;
public PeruAdaptador(Peru peru) {
this.peru = peru;
}
@Override
public void quack() {
peru.gorgolejar();
}
@Override
public void fly() {
for (int i = 0; i < 5; i++) {
peru.fly();
}
}
}
![Page 9: Apresentação Design Adaptador](https://reader037.fdocumentos.tips/reader037/viewer/2022100602/558e242f1a28ab62048b4628/html5/thumbnails/9.jpg)
public class PatoTest {
public static void main(String[] args) {PatoBravo patoBravo = new PatoBravo();
PeruComum peruComum = new PeruComum();Pato peruAdaptado = new PeruAdaptador(peruComum);
System.out.println("Testando peru comum");peruComum.gorgolejar();peruComum.fly();
System.out.println("\nTestando o pato bravo");testPato(patoBravo);
System.out.println("\nTestando o peru disfarçado de pato");testPato(peruAdaptado);
static void testPato(Pato pato){pato.quack();pato.fly();}
![Page 10: Apresentação Design Adaptador](https://reader037.fdocumentos.tips/reader037/viewer/2022100602/558e242f1a28ab62048b4628/html5/thumbnails/10.jpg)
Testando peru adaptadoGlu - GluPeru adaptado
Testando o pato bravoQuackFly
Testando o peru disfarçado de patoGlu - GluPeru adaptadoPeru adaptadoPeru adaptadoPeru adaptadoPeru adaptado
![Page 11: Apresentação Design Adaptador](https://reader037.fdocumentos.tips/reader037/viewer/2022100602/558e242f1a28ab62048b4628/html5/thumbnails/11.jpg)
Existe também o adaptador de classes,
porem não é possível utiliza-lo com o java.
O motivo é que ele requer herança multipla, o que até então ainda não é possível no java.
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.
![Page 12: Apresentação Design Adaptador](https://reader037.fdocumentos.tips/reader037/viewer/2022100602/558e242f1a28ab62048b4628/html5/thumbnails/12.jpg)
Adaptadores do mundo real
EnumerationhasMoreElements()nextElement()
IteratorhasNext()next()remove()
![Page 13: Apresentação Design Adaptador](https://reader037.fdocumentos.tips/reader037/viewer/2022100602/558e242f1a28ab62048b4628/html5/thumbnails/13.jpg)
public class EnumerationIterator implements Iterator<Object> {private Enumeration<Object> enumeration;
public EnumerationIterator(Enumeration<Object> enumeration) this.enumeration = enumeration;
@Overridepublic boolean hasNext() return enumeration.hasMoreElements();
@Overridepublic Object next() return enumeration.nextElement();
@Overridepublic void remove() {throw new UnsupportedOperationException();
}
![Page 14: Apresentação Design Adaptador](https://reader037.fdocumentos.tips/reader037/viewer/2022100602/558e242f1a28ab62048b4628/html5/thumbnails/14.jpg)
Obrigado !