Apresentação Design Adaptador

14

Click here to load reader

Transcript of Apresentação Design Adaptador

Page 1: Apresentação Design Adaptador

Design Patterns

Page 2: Apresentação Design Adaptador

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

Classe A Adaptador Classe B

Page 4: Apresentação Design Adaptador

public interface Pato {

public void quack();

public void fly();

}

Page 5: Apresentação Design Adaptador

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

public interface Peru {

public void gorgolejar();

public void fly();}

Page 7: Apresentação Design Adaptador

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

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

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

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

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

Adaptadores do mundo real

EnumerationhasMoreElements()nextElement()

IteratorhasNext()next()remove()

Page 13: Apresentação Design Adaptador

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

Obrigado !