Padrão Adapter
Thiago Barros 1102133 ADS 640
Problema
 Hoje em dia, não é difícil encontrarmos vários tipos de

tomada...

Você certamente já teve problemas para ligar um aparelho...
Solução

Utilizar um adaptador, conhecido como “t” ou “benjamim”
Solução
 Fazendo uma analogia, podemos dizer que o adaptador muda

a interface da tomada para algo parecido com o que seu
conector espera encontrar.
 Mas como utilizar adaptadores em Orientação a Objetos?
Adaptadores orientados a objetos

Digamos que você tenha que encaixar uma nova biblioteca de classes,
adquirida de outro fornecedor, em um sistema já existente, mas as
interfaces projetadas por esse novo fornecedor sejam diferentes das
adotadas pelo fornecedor anterior...
Adaptadores orientados a objetos

Você não quer resolver o problema mudando o código existente e
nem mudar o código do fornecedor, então, escreva uma classe que
adapte a interface do novo fornecedor ao formato que o sistema
espera encontrar...
Adaptadores orientados a objetos

O adaptador funciona como um intermediário, recebendo as
solicitações do cliente e convertendo-as para um formato que faça
sentido para as classes do novo fornecedor.
Padrão Adapter

Para exemplo, será utilizado o exemplo de patos utilizado no
Capitulo 1 do livro Use a Cabeça Padrões de Projetos (vide
referencias bibliográficas)...
Padrão Adapter

Aqui esta uma subclasse de Duck, MallardDuck...
Padrão Adapter

Chegou a hora de conhecer a mais nova ave da turma...
Padrão Adapter

Agora digamos que alguns objetos Duck estejam em falta e você
queira usar objetos Turkey em seu lugar. Os perus tem uma interface
diferente, logo não podemos utiliza-los do jeito que estão...
Portanto, vamos escrever um Adaptador
Padrão Adapter

Agora vamos testar nosso adaptador...
Padrão Adapter

Agora que você sabe o que é um adaptador, vamos voltar e analisar
novamente suas peças...
Padrão Adapter

O cliente faz uma solicitação ao adaptador chamando um método
nele através da interface alvo...
Padrão Adapter

O adaptador traduz a solicitação para uma ou mais chamadas de
métodos no adaptado usando a interface desse objeto...
Padrão Adapter

O cliente recebe os resultados da chamada sem jamais perceber que
há um adaptador fazendo a tradução...
Exercício
 Uma empresa vende somente carros, seu sistema implementa

a classe interface Carro

public interface Carro{
public void quatroRodas();
public void Volante();
}
Exercício
 Um exemplo de venda é o Fusca

public class Fusca implements Carro{
public void quatroRodas(){
System.ou.println("4 rodas ok");
}
public void Volante(){
System.ou.println("volante ok");
}
}
Exercício
 A empresa começa a vendar motos, e ganha de seu

fornecedor um sistema pronto.
 Adapte a interface Moto para a interface Carro
public interface Moto{
public void duasRodas();
public void guidao();
}
public class cg125 implements Moto{
public void duasRodas(){
System.ou.println("2 rodas ok");
}
public void guidao(){
System.ou.println("guidao ok");
}
}
Exercício - Solução
public class cg125Adapter implements Carro{
Moto moto;
public cg125Adapter(){
this.moto = moto;
}
public void quatroRodas(Moto moto){
moto.duasRodas();
}
public void Volante(){
moto.guidao();
}
}
Referências

• Livro:
FREEMAN, Eric; FREEMAN, Elisabeth, Use a Cabeça! (Head First)
Padrões de Projetos (Design Patterns) , 2ª Ed..

Thiago silva barros_1102133_ads_640_padrao_adapter

  • 1.
  • 2.
    Problema  Hoje emdia, não é difícil encontrarmos vários tipos de tomada... Você certamente já teve problemas para ligar um aparelho...
  • 3.
    Solução Utilizar um adaptador,conhecido como “t” ou “benjamim”
  • 4.
    Solução  Fazendo umaanalogia, podemos dizer que o adaptador muda a interface da tomada para algo parecido com o que seu conector espera encontrar.  Mas como utilizar adaptadores em Orientação a Objetos?
  • 5.
    Adaptadores orientados aobjetos Digamos que você tenha que encaixar uma nova biblioteca de classes, adquirida de outro fornecedor, em um sistema já existente, mas as interfaces projetadas por esse novo fornecedor sejam diferentes das adotadas pelo fornecedor anterior...
  • 6.
    Adaptadores orientados aobjetos Você não quer resolver o problema mudando o código existente e nem mudar o código do fornecedor, então, escreva uma classe que adapte a interface do novo fornecedor ao formato que o sistema espera encontrar...
  • 7.
    Adaptadores orientados aobjetos O adaptador funciona como um intermediário, recebendo as solicitações do cliente e convertendo-as para um formato que faça sentido para as classes do novo fornecedor.
  • 8.
    Padrão Adapter Para exemplo,será utilizado o exemplo de patos utilizado no Capitulo 1 do livro Use a Cabeça Padrões de Projetos (vide referencias bibliográficas)...
  • 9.
    Padrão Adapter Aqui estauma subclasse de Duck, MallardDuck...
  • 10.
    Padrão Adapter Chegou ahora de conhecer a mais nova ave da turma...
  • 11.
    Padrão Adapter Agora digamosque alguns objetos Duck estejam em falta e você queira usar objetos Turkey em seu lugar. Os perus tem uma interface diferente, logo não podemos utiliza-los do jeito que estão... Portanto, vamos escrever um Adaptador
  • 12.
    Padrão Adapter Agora vamostestar nosso adaptador...
  • 13.
    Padrão Adapter Agora quevocê sabe o que é um adaptador, vamos voltar e analisar novamente suas peças...
  • 14.
    Padrão Adapter O clientefaz uma solicitação ao adaptador chamando um método nele através da interface alvo...
  • 15.
    Padrão Adapter O adaptadortraduz a solicitação para uma ou mais chamadas de métodos no adaptado usando a interface desse objeto...
  • 16.
    Padrão Adapter O clienterecebe os resultados da chamada sem jamais perceber que há um adaptador fazendo a tradução...
  • 17.
    Exercício  Uma empresavende somente carros, seu sistema implementa a classe interface Carro public interface Carro{ public void quatroRodas(); public void Volante(); }
  • 18.
    Exercício  Um exemplode venda é o Fusca public class Fusca implements Carro{ public void quatroRodas(){ System.ou.println("4 rodas ok"); } public void Volante(){ System.ou.println("volante ok"); } }
  • 19.
    Exercício  A empresacomeça a vendar motos, e ganha de seu fornecedor um sistema pronto.  Adapte a interface Moto para a interface Carro public interface Moto{ public void duasRodas(); public void guidao(); } public class cg125 implements Moto{ public void duasRodas(){ System.ou.println("2 rodas ok"); } public void guidao(){ System.ou.println("guidao ok"); } }
  • 20.
    Exercício - Solução publicclass cg125Adapter implements Carro{ Moto moto; public cg125Adapter(){ this.moto = moto; } public void quatroRodas(Moto moto){ moto.duasRodas(); } public void Volante(){ moto.guidao(); } }
  • 21.
    Referências • Livro: FREEMAN, Eric;FREEMAN, Elisabeth, Use a Cabeça! (Head First) Padrões de Projetos (Design Patterns) , 2ª Ed..