Thiago silva barros_1102133_ads_640_padrao_adapter

Post on 10-Jul-2015

152 views 5 download

description

Padrão de Projeto Adapter

Transcript of Thiago silva barros_1102133_ads_640_padrao_adapter

Thiago Barros 1102133 ADS 640

Padrão Adapter

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..