|
|
(5 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
| + | {{NAVPO}} |
| {{TOCright}} | | {{TOCright}} |
| O padrão "adapter" permite alterar o comportamento e a interface de um objecto, para que possa ser utilizado noutro contexto. | | O padrão "adapter" permite alterar o comportamento e a interface de um objecto, para que possa ser utilizado noutro contexto. |
Line 16: |
Line 17: |
| ==Exemplos== | | ==Exemplos== |
| | | |
− | === Representação Esquemática ===
| + | * [[Adapter Pattern (padrão de desenho)/Patos e Perus]] |
| | | |
− | [[Image:patoperu.png|600px]]
| + | == Exercícios == |
| | | |
− | === Implementação ===
| + | * [[Adapter Pattern (padrão de desenho)/Exercício 01: Cat Stream|Exercício 01: Cat Stream]] |
| | | |
− | Patos e perus.
| + | [[category:Ensino]] |
− | <java5>
| + | [[category:PO]] |
− | public interface Pato {
| |
− | public void quáquá();
| |
− | public void voar();
| |
− | }
| |
− | </java5>
| |
− | <java5>
| |
− | public class PatoMarreco implements Pato {
| |
− | public void quáquá() {
| |
− | System.out.println("Quá! Quá!");
| |
− | }
| |
− |
| |
− | public void voar() {
| |
− | System.out.println("Voando...");
| |
− | }
| |
− | }
| |
− | </java5>
| |
− | <java5>
| |
− | public interface Peru {
| |
− | public void gluglu();
| |
− | public void voar();
| |
− | }
| |
− | </java5>
| |
− | <java5>
| |
− | public class PeruSelvagem implements Peru {
| |
− | public void gluglu() {
| |
− | System.out.println("Glu, glu, glu!");
| |
− | }
| |
− |
| |
− | public void voar() {
| |
− | System.out.println("Voando... um bocadinho.");
| |
− | }
| |
− | }
| |
− | public class AdaptadorDePeru implements Pato {
| |
− | Peru _peru;
| |
− |
| |
− | public AdaptadorDePeru(Peru peru) { _peru = peru; }
| |
− |
| |
− | public void quáquá() { _peru.gluglu(); }
| |
− | | |
− | public void voar() {
| |
− | for(int i=0; i < 5; i++) _peru.voar();
| |
− | }
| |
− | }
| |
− | </java5>
| |
− | <java5>
| |
− | public class PatoDeTestes {
| |
− | public static void main(String[] args) {
| |
− | PatoMarreco pato = new PatoMarreco();
| |
− |
| |
− | PeruSelvagem peru = new PeruSelvagem();
| |
− | Pato adaptadorDePeru = new AdaptadorDePeru(peru);
| |
− |
| |
− | System.out.println("O peru faz...");
| |
− | peru.gluglu();
| |
− | peru.voar();
| |
− |
| |
− | System.out.println("\nO pato faz...");
| |
− | testarPato(pato);
| |
− |
| |
− | System.out.println("\nO adaptador de peru faz...");
| |
− | testarPato(adaptadorDePeru);
| |
− | }
| |
− |
| |
− | static void testarPato(Pato pato) { pato.quáquá(); pato.voar(); }
| |
− | }
| |
− | </java5>
| |
− | <java5>
| |
− | public class AdaptadorDePato implements Peru {
| |
− | Pato _pato;
| |
− | Random _rand;
| |
− |
| |
− | public AdaptadorDePato(Pato pato) {
| |
− | _pato = pato;
| |
− | _rand = new Random();
| |
− | }
| |
− |
| |
− | public void gluglu() { _pato.quáquá(); }
| |
− |
| |
− | public void voar() {
| |
− | if (_rand.nextInt(5) == 0) { _pato.voar(); }
| |
− | }
| |
− | }
| |
− | </java5>
| |
− | <java5>
| |
− | public class PeruDeTestes {
| |
− | public static void main(String[] args) {
| |
− | PatoMarreco pato = new PatoMarreco();
| |
− | Peru adaptadorDePato = new AdaptadorDePato(pato);
| |
− |
| |
− | for(int i=0;i<8;i++) {
| |
− | System.out.println("O adaptador de pato faz...");
| |
− | adaptadorDePato.gluglu();
| |
− | adaptadorDePato.voar();
| |
− | }
| |
− | }
| |
− | }
| |
− | </java5>
| |
− | [[category:OOP]] | |
− | [[category:Teaching]] | |
O padrão "adapter" permite alterar o comportamento e a interface de um objecto, para que possa ser utilizado noutro contexto.