Design Patterns
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.
   Classe A                   Adaptador            Classe B
public interface Pato {publicvoidquack();publicvoidfly();		 	 }
public class PatoBravo implements Pato {	@Overridepublicvoidquack() {		System.out.println("Quack");	}	@Overridepublicvoidfly() {		System.out.println("Fly");	}}
public interface Peru {publicvoid gorgolejar();publicvoidfly();}
public class PeruComumimplements Peru {	@Overridepublicvoid gorgolejar() {		System.out.println("Glu - Glu");	}	@Overridepublicvoidfly() {		System.out.println("Peru comum voando");	}}
publicclassPeruAdaptadorimplements Pato {private Peru peru;publicPeruAdaptador(Peru peru) {this.peru = peru;	}	@Overridepublicvoidquack() {		peru.gorgolejar();	}	@Overridepublicvoidfly() {		for (int i = 0; i < 5; i++) {			peru.fly();		}	}}
publicclassPatoTest {	public static void main(String[] args) {PatoBravopatoBravo = newPatoBravo();PeruComumperuComum= newPeruComum();		Pato peruAdaptado = newPeruAdaptador(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);staticvoidtestPato(Pato pato){		pato.quack();		pato.fly();}
Testando peru adaptadoGlu - Glu	Peru adaptadoTestando o pato bravo	QuackFlyTestando o peru disfarçado de patoGlu - Glu	Peru adaptado	Peru adaptado	Peru adaptado	Peru adaptado	Peru adaptado
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.
Adaptadores do mundo realEnumerationhasMoreElements()nextElement()IteratorhasNext()next()	remove()
public class EnumerationIterator implements Iterator<Object> {privateEnumeration<Object> enumeration;publicEnumerationIterator(Enumeration<Object> enumeration) this.enumeration = enumeration;	@OverridepublicbooleanhasNext() returnenumeration.hasMoreElements();	@OverridepublicObjectnext() returnenumeration.nextElement();	@Overridepublicvoid remove() {thrownewUnsupportedOperationException();}
Obrigado !

Apresentação Design Adaptador

  • 1.
  • 2.
    Padrão adaptador Se resumeem 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.
  • 3.
    Classe A Adaptador Classe B
  • 4.
    public interface Pato{publicvoidquack();publicvoidfly(); }
  • 5.
    public class PatoBravoimplements Pato { @Overridepublicvoidquack() { System.out.println("Quack"); } @Overridepublicvoidfly() { System.out.println("Fly"); }}
  • 6.
    public interface Peru{publicvoid gorgolejar();publicvoidfly();}
  • 7.
    public class PeruComumimplementsPeru { @Overridepublicvoid gorgolejar() { System.out.println("Glu - Glu"); } @Overridepublicvoidfly() { System.out.println("Peru comum voando"); }}
  • 8.
    publicclassPeruAdaptadorimplements Pato {privatePeru peru;publicPeruAdaptador(Peru peru) {this.peru = peru; } @Overridepublicvoidquack() { peru.gorgolejar(); } @Overridepublicvoidfly() { for (int i = 0; i < 5; i++) { peru.fly(); } }}
  • 9.
    publicclassPatoTest { public staticvoid main(String[] args) {PatoBravopatoBravo = newPatoBravo();PeruComumperuComum= newPeruComum(); Pato peruAdaptado = newPeruAdaptador(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);staticvoidtestPato(Pato pato){ pato.quack(); pato.fly();}
  • 10.
    Testando peru adaptadoGlu- Glu Peru adaptadoTestando o pato bravo QuackFlyTestando o peru disfarçado de patoGlu - Glu Peru adaptado Peru adaptado Peru adaptado Peru adaptado Peru adaptado
  • 11.
    Existe também oadaptador 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.
  • 12.
    Adaptadores do mundorealEnumerationhasMoreElements()nextElement()IteratorhasNext()next() remove()
  • 13.
    public class EnumerationIteratorimplements Iterator<Object> {privateEnumeration<Object> enumeration;publicEnumerationIterator(Enumeration<Object> enumeration) this.enumeration = enumeration; @OverridepublicbooleanhasNext() returnenumeration.hasMoreElements(); @OverridepublicObjectnext() returnenumeration.nextElement(); @Overridepublicvoid remove() {thrownewUnsupportedOperationException();}
  • 14.