SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
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..

Mais conteúdo relacionado

Destaque

Aula 06 - UML e Padrões de Projeto
Aula 06 - UML e Padrões de ProjetoAula 06 - UML e Padrões de Projeto
Aula 06 - UML e Padrões de ProjetoVinícius de Paula
 
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgePadrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgeLorran Pegoretti
 
Padrão De Projeto Adapter
Padrão De Projeto AdapterPadrão De Projeto Adapter
Padrão De Projeto AdapterMatheus Andrade
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPAricelio Souza
 

Destaque (6)

Gof design patterns
Gof design patternsGof design patterns
Gof design patterns
 
Aula 06 - UML e Padrões de Projeto
Aula 06 - UML e Padrões de ProjetoAula 06 - UML e Padrões de Projeto
Aula 06 - UML e Padrões de Projeto
 
Padrão Adapter
Padrão AdapterPadrão Adapter
Padrão Adapter
 
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgePadrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e Bridge
 
Padrão De Projeto Adapter
Padrão De Projeto AdapterPadrão De Projeto Adapter
Padrão De Projeto Adapter
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAP
 

Semelhante a Padrão Adapter explicado

Exemplos de Design Patterns em Java
Exemplos de Design Patterns em JavaExemplos de Design Patterns em Java
Exemplos de Design Patterns em Javaalexmacedo
 
Padrão de Projeto - Adapter
Padrão de Projeto - AdapterPadrão de Projeto - Adapter
Padrão de Projeto - AdapterJuliana Cindra
 
Padroes de Projetos e aplicações- parte 01
Padroes de Projetos e aplicações- parte 01Padroes de Projetos e aplicações- parte 01
Padroes de Projetos e aplicações- parte 01Walney Negreiros
 
Padrões-11 - Padrões Estruturais - Adaptador
Padrões-11 - Padrões Estruturais - AdaptadorPadrões-11 - Padrões Estruturais - Adaptador
Padrões-11 - Padrões Estruturais - AdaptadorEduardo Nicola F. Zagari
 
Criando APIs com Node e TypeScript
Criando APIs com Node e TypeScriptCriando APIs com Node e TypeScript
Criando APIs com Node e TypeScriptAndre Baltieri
 
Não existe feedback melhor do que o do seu código
Não existe feedback melhor do que o do seu códigoNão existe feedback melhor do que o do seu código
Não existe feedback melhor do que o do seu códigoRenan Carvalho
 
Intro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverIntro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverEduardo Jorge
 
Lógica de programação 1
Lógica de programação 1Lógica de programação 1
Lógica de programação 1Diego Rodrigues
 
DDD manipulando mais que bytes
DDD   manipulando mais que bytesDDD   manipulando mais que bytes
DDD manipulando mais que bytesCarlos Maniero
 
Padrões de Projeto: Adapter
Padrões de Projeto: AdapterPadrões de Projeto: Adapter
Padrões de Projeto: AdapterMessias Batista
 
Uma abordagem funcional para gerenciamento de erros
Uma abordagem funcional para gerenciamento de errosUma abordagem funcional para gerenciamento de erros
Uma abordagem funcional para gerenciamento de errosGabriel Schade Cardoso
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaFernando Camargo
 
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...JP Clementi
 
Domain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHDomain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHGiovanni Bassi
 
Observable Binding Para Atualização na UI Android
Observable Binding Para Atualização na UI AndroidObservable Binding Para Atualização na UI Android
Observable Binding Para Atualização na UI AndroidVinícius Thiengo
 

Semelhante a Padrão Adapter explicado (20)

Exemplos de Design Patterns em Java
Exemplos de Design Patterns em JavaExemplos de Design Patterns em Java
Exemplos de Design Patterns em Java
 
Padrão de Projeto - Adapter
Padrão de Projeto - AdapterPadrão de Projeto - Adapter
Padrão de Projeto - Adapter
 
padrao de projeto1
padrao de projeto1padrao de projeto1
padrao de projeto1
 
Padroes de Projetos e aplicações- parte 01
Padroes de Projetos e aplicações- parte 01Padroes de Projetos e aplicações- parte 01
Padroes de Projetos e aplicações- parte 01
 
Padrões-11 - Padrões Estruturais - Adaptador
Padrões-11 - Padrões Estruturais - AdaptadorPadrões-11 - Padrões Estruturais - Adaptador
Padrões-11 - Padrões Estruturais - Adaptador
 
Código limpo
Código limpoCódigo limpo
Código limpo
 
Criando APIs com Node e TypeScript
Criando APIs com Node e TypeScriptCriando APIs com Node e TypeScript
Criando APIs com Node e TypeScript
 
Refactoring - Design no Código
Refactoring - Design no CódigoRefactoring - Design no Código
Refactoring - Design no Código
 
Não existe feedback melhor do que o do seu código
Não existe feedback melhor do que o do seu códigoNão existe feedback melhor do que o do seu código
Não existe feedback melhor do que o do seu código
 
Intro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserverIntro padroesprojetoadaptertemplateobserver
Intro padroesprojetoadaptertemplateobserver
 
Lógica de programação 1
Lógica de programação 1Lógica de programação 1
Lógica de programação 1
 
DDD manipulando mais que bytes
DDD   manipulando mais que bytesDDD   manipulando mais que bytes
DDD manipulando mais que bytes
 
Padrões de Projeto: Adapter
Padrões de Projeto: AdapterPadrões de Projeto: Adapter
Padrões de Projeto: Adapter
 
Uma abordagem funcional para gerenciamento de erros
Uma abordagem funcional para gerenciamento de errosUma abordagem funcional para gerenciamento de erros
Uma abordagem funcional para gerenciamento de erros
 
Construção de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em JavaConstrução de Frameworks com Annotation e Reflection API em Java
Construção de Frameworks com Annotation e Reflection API em Java
 
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
TechEd Brasil 2010 - Dicas, truques do Visual Studio 2010 e novas funcionalid...
 
Apostila de-arduino
Apostila de-arduinoApostila de-arduino
Apostila de-arduino
 
Introducao XP
Introducao XPIntroducao XP
Introducao XP
 
Domain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BHDomain Driven Design (DDD) - DevIsland, BH
Domain Driven Design (DDD) - DevIsland, BH
 
Observable Binding Para Atualização na UI Android
Observable Binding Para Atualização na UI AndroidObservable Binding Para Atualização na UI Android
Observable Binding Para Atualização na UI Android
 

Mais de Thiago Barros, PSM

Ferramentas Livres para a Gestão de Projetos Ágeis com Scrum
Ferramentas Livres para a Gestão de Projetos Ágeis com ScrumFerramentas Livres para a Gestão de Projetos Ágeis com Scrum
Ferramentas Livres para a Gestão de Projetos Ágeis com ScrumThiago Barros, PSM
 
Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...
Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...
Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...Thiago Barros, PSM
 
Thiago silva barros_1102133_ads_640_servidores_de_leitura_e_envio_de_e-mails
Thiago silva barros_1102133_ads_640_servidores_de_leitura_e_envio_de_e-mailsThiago silva barros_1102133_ads_640_servidores_de_leitura_e_envio_de_e-mails
Thiago silva barros_1102133_ads_640_servidores_de_leitura_e_envio_de_e-mailsThiago Barros, PSM
 
Apresentação desenvolvimento de plataforma para comandar microcontroladores e...
Apresentação desenvolvimento de plataforma para comandar microcontroladores e...Apresentação desenvolvimento de plataforma para comandar microcontroladores e...
Apresentação desenvolvimento de plataforma para comandar microcontroladores e...Thiago Barros, PSM
 

Mais de Thiago Barros, PSM (7)

Ferramentas Livres para a Gestão de Projetos Ágeis com Scrum
Ferramentas Livres para a Gestão de Projetos Ágeis com ScrumFerramentas Livres para a Gestão de Projetos Ágeis com Scrum
Ferramentas Livres para a Gestão de Projetos Ágeis com Scrum
 
Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...
Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...
Apresentação do Projeto PRIME SCRUM. trabalho final do curso de Análise e Des...
 
Apresentacao artigo final
Apresentacao artigo finalApresentacao artigo final
Apresentacao artigo final
 
Controle de versão com e git
Controle de versão com e gitControle de versão com e git
Controle de versão com e git
 
Thiago silva barros_1102133_ads_640_servidores_de_leitura_e_envio_de_e-mails
Thiago silva barros_1102133_ads_640_servidores_de_leitura_e_envio_de_e-mailsThiago silva barros_1102133_ads_640_servidores_de_leitura_e_envio_de_e-mails
Thiago silva barros_1102133_ads_640_servidores_de_leitura_e_envio_de_e-mails
 
Apresentação desenvolvimento de plataforma para comandar microcontroladores e...
Apresentação desenvolvimento de plataforma para comandar microcontroladores e...Apresentação desenvolvimento de plataforma para comandar microcontroladores e...
Apresentação desenvolvimento de plataforma para comandar microcontroladores e...
 
Meios guiado de transmissão
Meios guiado de transmissãoMeios guiado de transmissão
Meios guiado de transmissão
 

Padrão Adapter explicado

  • 2. Problema  Hoje em dia, 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 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?
  • 5. 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...
  • 6. 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...
  • 7. 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.
  • 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 esta uma subclasse de Duck, MallardDuck...
  • 10. Padrão Adapter Chegou a hora de conhecer a mais nova ave da turma...
  • 11. 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
  • 12. Padrão Adapter Agora vamos testar nosso adaptador...
  • 13. Padrão Adapter Agora que você sabe o que é um adaptador, vamos voltar e analisar novamente suas peças...
  • 14. Padrão Adapter O cliente faz uma solicitação ao adaptador chamando um método nele através da interface alvo...
  • 15. Padrão Adapter O adaptador traduz a solicitação para uma ou mais chamadas de métodos no adaptado usando a interface desse objeto...
  • 16. Padrão Adapter O cliente recebe os resultados da chamada sem jamais perceber que há um adaptador fazendo a tradução...
  • 17. Exercício  Uma empresa vende somente carros, seu sistema implementa a classe interface Carro public interface Carro{ public void quatroRodas(); public void Volante(); }
  • 18. 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"); } }
  • 19. 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"); } }
  • 20. 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(); } }
  • 21. Referências • Livro: FREEMAN, Eric; FREEMAN, Elisabeth, Use a Cabeça! (Head First) Padrões de Projetos (Design Patterns) , 2ª Ed..