|
|
| (17 intermediate revisions by the same user not shown) |
| Line 1: |
Line 1: |
| O padrão "state" permite que um objecto altere o seu comportamento quando o seu estado muda. | | {{NAVPO}} |
| | {{TOCright}} |
| | O padrão "adapter" permite alterar o comportamento e a interface de um objecto, para que possa ser utilizado noutro contexto. |
|
| |
|
| ==Estrutura== | | ==Estrutura do Adaptador de Classes == |
| O padrão ''state'' tem a seguinte estrutura de classes:
| |
|
| |
|
| [[Image:state-dpcd.png|500px]]
| | O padrão ''adapter'' (versão adaptador de classes) tem a seguinte estrutura de classes: |
|
| |
|
| ==Exemplos==
| | [[Image:adapter-cls-dpcd.png|500px]] |
|
| |
|
| Patos e perus.
| | ==Estrutura do Adaptador de Objectos == |
|
| |
|
| public interface Pato {
| | O padrão ''adapter'' (versão adaptador de objectos) tem a seguinte estrutura de classes: |
| public void quáquá();
| |
| public void voar();
| |
| }
| |
|
| |
|
| | [[Image:adapter-obj-dpcd.png|500px]] |
|
| |
|
| public class PatoMarreco implements Pato {
| | ==Exemplos== |
| 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 {
| | * [[Adapter Pattern (padrão de desenho)/Patos e Perus]] |
| 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 {
| | == Exercícios == |
| 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 {
| | * [[Adapter Pattern (padrão de desenho)/Exercício 01: Cat Stream|Exercício 01: Cat Stream]] |
| 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();
| |
| }
| |
| }
| |
| }
| |
|
| |
|
| [[category:OOP]] | | [[category:Ensino]] |
| | [[category:PO]] |
O padrão "adapter" permite alterar o comportamento e a interface de um objecto, para que possa ser utilizado noutro contexto.
Estrutura do Adaptador de Classes
O padrão adapter (versão adaptador de classes) tem a seguinte estrutura de classes:
Estrutura do Adaptador de Objectos
O padrão adapter (versão adaptador de objectos) tem a seguinte estrutura de classes:
Exemplos
Exercícios