Difference between revisions of "Adapter Pattern (padrão de desenho)/Patos e Perus"

From Wiki**3

< Adapter Pattern (padrão de desenho)
 
Line 6: Line 6:
  
 
Patos e perus.
 
Patos e perus.
<java5>
+
<source lang="java">
 
   public interface Pato {
 
   public interface Pato {
 
     public void quáquá();
 
     public void quáquá();
 
     public void voar();
 
     public void voar();
 
   }
 
   }
</java5>
+
</source>
<java5>
+
<source lang="java">
 
   public class PatoMarreco implements Pato {
 
   public class PatoMarreco implements Pato {
 
     public void quáquá() {
 
     public void quáquá() {
 
       System.out.println("Quá! Quá!");
 
       System.out.println("Quá! Quá!");
 
     }
 
     }
 
+
 
     public void voar() {
 
     public void voar() {
 
       System.out.println("Voando...");
 
       System.out.println("Voando...");
 
     }
 
     }
 
   }
 
   }
</java5>
+
</source>
<java5>
+
<source lang="java">
 
   public interface Peru {
 
   public interface Peru {
 
     public void gluglu();
 
     public void gluglu();
 
     public void voar();
 
     public void voar();
 
   }
 
   }
</java5>
+
</source>
<java5>
+
<source lang="java">
 
   public class PeruSelvagem implements Peru {
 
   public class PeruSelvagem implements Peru {
 
     public void gluglu() {
 
     public void gluglu() {
Line 50: Line 50:
 
     }
 
     }
 
   }
 
   }
</java5>
+
</source>
<java5>
+
<source lang="java">
 
   public class PatoDeTestes {
 
   public class PatoDeTestes {
 
     public static void main(String[] args) {
 
     public static void main(String[] args) {
Line 65: Line 65:
 
       System.out.println("\nO pato faz...");
 
       System.out.println("\nO pato faz...");
 
       testarPato(pato);
 
       testarPato(pato);
 
+
 
       System.out.println("\nO adaptador de peru faz...");
 
       System.out.println("\nO adaptador de peru faz...");
 
       testarPato(adaptadorDePeru);
 
       testarPato(adaptadorDePeru);
 
     }
 
     }
 
   
 
   
     static void testarPato(Pato pato) { pato.quáquá(); pato.voar(); }
+
     static void testarPato(Pato pato) { pato.quáquá(); pato.voar();   }
 
   }
 
   }
</java5>
+
</source>
<java5>
+
<source lang="java">
 
   public class AdaptadorDePato implements Peru {
 
   public class AdaptadorDePato implements Peru {
 
     Pato  _pato;
 
     Pato  _pato;
Line 84: Line 84:
 
      
 
      
 
     public void gluglu() { _pato.quáquá(); }
 
     public void gluglu() { _pato.quáquá(); }
 
+
 
     public void voar() {
 
     public void voar() {
 
       if (_rand.nextInt(5) == 0) { _pato.voar(); }
 
       if (_rand.nextInt(5) == 0) { _pato.voar(); }
 
     }
 
     }
 
   }
 
   }
</java5>
+
</source>
<java5>
+
<source lang="java">
 
   public class PeruDeTestes {
 
   public class PeruDeTestes {
 
     public static void main(String[] args) {
 
     public static void main(String[] args) {
Line 103: Line 103:
 
     }
 
     }
 
   }
 
   }
</java5>
+
</source>
  
 
[[category:Ensino]]
 
[[category:Ensino]]
 
[[category:PO]]
 
[[category:PO]]
 
[[category:PO Exemplos]]
 
[[category:PO Exemplos]]

Latest revision as of 12:26, 7 November 2018

Representação Esquemática

Patoperu.png

Implementação

Patos e perus.

  public interface Pato {
    public void quáquá();
    public void voar();
  }
  public class PatoMarreco implements Pato {
    public void quáquá() {
      System.out.println("Quá! Quá!");
    }
 
    public void voar() {
      System.out.println("Voando...");
    }
  }
  public interface Peru {
    public void gluglu();
    public void voar();
  }
  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();
    }
  }
  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();    }
  }
  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(); }
    }
  }
  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();
      }
    }
  }