Line 1: | Line 1: | ||
O padrão "state" permite que um objecto altere o seu comportamento quando o seu estado muda. | O padrão "state" permite que um objecto altere o seu comportamento quando o seu estado muda. | ||
− | ==Estrutura== | + | ==Estrutura do Adaptador de Classes == |
+ | |||
+ | ==Estrutura do Adaptador de Objectos == | ||
+ | |||
O padrão ''state'' tem a seguinte estrutura de classes: | O padrão ''state'' tem a seguinte estrutura de classes: | ||
Line 7: | Line 10: | ||
==Exemplos== | ==Exemplos== | ||
+ | |||
+ | === Reprexsentação Esquemática === | ||
+ | |||
+ | [[Image:state-patoperu.png]] | ||
+ | |||
+ | === Implementação === | ||
Patos e perus. | Patos e perus. |
O padrão "state" permite que um objecto altere o seu comportamento quando o seu estado muda.
O padrão state tem a seguinte estrutura de classes:
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(); } } }