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();
}
}
}