Você está na página 1de 11

Análise e Projeto de Sistemas II

Padrões de Projeto: Adapter

● Objetivo: Efetuar a “intermediação” entre duas


coisas que não se conversam.
– Ex:
● Quando temos um aparelho com padrão diferente de
tomada, usamos um adaptador;
● A pilha de protocolos TCP/IP permite a heterogeneidade
de dispositivos de redes, então pode ser considerada um
adaptador;
● Etc.
Tipos de Adapter
● Adapter de Classe
– Quando o Adapter herda a classe a qual é
responsável pela tradução/adaptação

Client

Adapter Server

+doIt() +doIt()
Tipos de Adapter
● Adapter de Objeto
– Quando o Adapter possui um objeto da classe a
qual é responsável pela tradução/adaptação

Client

Adapter Server
- Server s
+doIt() +doIt()
Classe Server para ambos adapters
public class Server {
private double value; //in Fahrenheit

public double getValue(){


return this.value;
}
public void setValue(double value){
this.value = value;
}
}
Problema

● A classe Server opera com Fahrenheit,


enquanto que o Cliente opera em Celsius. Não
há a possibilidade de modificar a classe Server.
O que fazer?
– Solução: Usar o padrão de projeto Adapter
Adapter de Classe
public class Adapter extends Server{
public void setValue(double value){
super.setValue(value * (9/5) + 32); // C to F
}
public double getValue(){
return (super.getValue()-32) * (5/9); //F to C
}
public double getFValue(){
return super.getValue();
}
}
Adapter de Classe

public class Principal{


public static void main(String[] args){
Adapter a = new Adapter();//comunicando-se com Server
a.setValue(30); //enviando em celsius
System.out.println(a.getValue()); //recebe em celsius
System.out.println(a.getFValue()); //recebe em Farenheit
}
}
Perguntas

?
Exercício

● Crie um projeto com o padrão de projeto


Adapter que consista em um tradutor de texto
simples. O Cliente envia uma palavra em
português ao servidor e este, por sua vez,
responde em japonês romanizado. Construa
um adapter para que o mesmo responda em
inglês para o cliente. Use a tabela a seguir:
Exercício
Português Japonês(romanizado) Inglês

Eu te amo Aishiteru I love you

Tudo bem? Ogenki desu ka? How are you?

Boa noite! Oyasumi! Good night!

Bom dia! Ohayou! Good Morning!

Boa Tarde! Konnichiwa! Good Afternoon!

Desculpe Sumimasen Sorry

Você é homem? Anata wa dansei desu ka? Are you a man?


Você é mulher? Anata wa josei desu ka? Are you a woman?

Você também pode gostar