Aula 19

Padrão Adapter

Como vimos em sala de aula, o Padrão Adapter permite que uma aplicação utilize funcionalidades externas.
Se usa o Padrão adapter quando se quer usar uma classe existente, e sua interface não é
compatível com uma que você criou.

Sua Motivação é quando:
- Em algumas vezes uma classe não é reusável somente porque sua interface não é compatível com a interface de uma aplicação de um domínio específico.
- A solução é criar um objeto adaptador, que encapsule e filtre as especificidades da classe adaptada, fornecendo uma interface que a aplicação espera utilizar.

Darei um exemplo num Jogo de Pinos.
O clássico jogo de pinos redondos e quadrados que devem ser encaixados em um tabuleiro:

- Suponha inicialmente que somente haja uma classe para cada tipo de pino:
classe SquarePeg
classe RoundPeg
- Deseja-se inserir ambos os tipos de pinos da mesma forma:


public interface IRoundPeg {
public void insertR(String s);
}
public interface ISquarePeg {
public void insertS(String s);
}


public class SquarePeg implements ISquarePeg {
public void insertS(String s) {
System.out.println(“Pino quadrado inserido ; “ + s);
}
}
public class RoundPeg implements IRoundPeg {
public void insertR(String s) {
System.out.println(“Pino redondo inserido ; “ + s);
}
}


public class PegAdapter implements ISquarePeg, IRoundPeg{
private RoundPeg roundPeg;
private SquarePeg squarePeg;
public PegAdapter(SquarePeg p) {
squarePeg = p;
}
public PegAdapter(RoundPeg r) {
roundPeg = r;
}
public void insertS(String s) {
roundPeg.insertR(s);
}
public void insertR(String s){
squarePeg.insertS(s);
}
}


public class TestPegs{
public static void main(String args[ ]){
SquarePeg squarePeg = new SquarePeg( );
squarePeg.insertS(“pino quadrado 1...”);
RoundPeg roundPeg = new RoundPeg( );
roundPeg.insertR(“pino redondo 1...”);
ISquarePeg falseRound = new PegAdapter(roundPeg);
falseRound.insertS(“pino redondo 2...”);
ISquarePeg falseSquare = new PegAdapter(squarePeg);
falseSquare.insertR(“pino quadrado 2...”);
}
}


Referência Bibliográfica
http://www.dcc.ufmg.br/especializacao/cei/EngSoft/Turma10/pm-08-padroes-AULA-T10-o2.pdf

Nenhum comentário: