SlideShare une entreprise Scribd logo
1  sur  14
Design Patterns
Padrão adaptador	 Se resume em converter uma interface de uma classe para outra interface que o cliente espera encontrar. O adaptador permite que classes com interfaces incompatíveis trabalhem juntas.
   Classe A                   Adaptador            Classe B
public interface Pato { publicvoidquack(); publicvoidfly(); 		 	 }
public class PatoBravo implements Pato { 	@Override publicvoidquack() { 		System.out.println("Quack"); 	} 	@Override publicvoidfly() { 		System.out.println("Fly"); 	} }
public interface Peru { publicvoid gorgolejar(); publicvoidfly(); }
public class PeruComumimplements Peru { 	@Override publicvoid gorgolejar() { 		System.out.println("Glu - Glu"); 	} 	@Override publicvoidfly() { 		System.out.println("Peru comum voando"); 	} }
publicclassPeruAdaptadorimplements Pato { private Peru peru; publicPeruAdaptador(Peru peru) { this.peru = peru; 	} 	@Override publicvoidquack() { 		peru.gorgolejar(); 	} 	@Override publicvoidfly() { 		for (int i = 0; i < 5; i++) { 			peru.fly(); 		} 	} }
publicclassPatoTest { 	public static void main(String[] args) { PatoBravopatoBravo = newPatoBravo(); PeruComumperuComum= newPeruComum(); 		Pato peruAdaptado = newPeruAdaptador(peruComum); 		System.out.println("Testando peru comum"); peruComum.gorgolejar(); peruComum.fly(); 		System.out.println("Testando o pato bravo"); testPato(patoBravo); 		System.out.println("Testando o peru disfarçado de pato"); testPato(peruAdaptado); staticvoidtestPato(Pato pato){ 		pato.quack(); 		pato.fly();}
Testando peru adaptado Glu - Glu 	Peru adaptado Testando o pato bravo	 Quack Fly Testando o peru disfarçado de pato Glu - Glu 	Peru adaptado 	Peru adaptado 	Peru adaptado 	Peru adaptado 	Peru adaptado
Existe também o adaptador de classes, porem não é possível utiliza-lo com o java. O motivo é que ele requer herança multipla, o que até então ainda não é possível no java. A principal diferença é que ao invés de  utilizar a composição como faz o adaptador de objetos, o adaptador de classes utiliza a herança, assim podendo ter acesso as chamadas do métodos.
Adaptadores do mundo real Enumeration hasMoreElements() nextElement() ,[object Object],hasNext() next() 	remove()
public class EnumerationIterator implements Iterator<Object> { privateEnumeration<Object> enumeration; publicEnumerationIterator(Enumeration<Object> enumeration)  this.enumeration = enumeration; 	@Override publicbooleanhasNext()  returnenumeration.hasMoreElements(); 	@Override publicObjectnext()  returnenumeration.nextElement(); 	@Override publicvoid remove() { thrownewUnsupportedOperationException(); }
Obrigado !

Contenu connexe

Tendances

Java recursos avançados - socket connection
Java   recursos avançados - socket connectionJava   recursos avançados - socket connection
Java recursos avançados - socket connectionArmando Daniel
 
Aop Aspect J 1.5.4 Capitulo 02
Aop Aspect J 1.5.4 Capitulo 02Aop Aspect J 1.5.4 Capitulo 02
Aop Aspect J 1.5.4 Capitulo 02Diego Pacheco
 
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...Rogério Moraes de Carvalho
 
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...Rogério Moraes de Carvalho
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitDiego Tremper
 
Design Patterns na Programação de Jogo
Design Patterns na Programação de JogoDesign Patterns na Programação de Jogo
Design Patterns na Programação de JogoBruno Cicanci
 
[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...
[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...
[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...iMasters
 
Oficina de Web Design Lecom - PHP e JavaScript
Oficina de Web Design Lecom - PHP e JavaScriptOficina de Web Design Lecom - PHP e JavaScript
Oficina de Web Design Lecom - PHP e JavaScriptRaphael Donaire Albino
 
Aop Aspect J 1.5.4 Capitulo 04
Aop Aspect J 1.5.4 Capitulo 04Aop Aspect J 1.5.4 Capitulo 04
Aop Aspect J 1.5.4 Capitulo 04Diego Pacheco
 
Curso avançado de c++ em portugues
Curso avançado de c++ em portuguesCurso avançado de c++ em portugues
Curso avançado de c++ em portuguesLaura
 
UFCG.JCert Reunião 1 - Declarações e Controle de Acesso
UFCG.JCert Reunião 1 - Declarações e Controle de AcessoUFCG.JCert Reunião 1 - Declarações e Controle de Acesso
UFCG.JCert Reunião 1 - Declarações e Controle de AcessoAnderson Ledo
 
IAsyncResult Pattern ou Asynchronous Programming Model (APM)
IAsyncResult Pattern ou Asynchronous Programming Model (APM)IAsyncResult Pattern ou Asynchronous Programming Model (APM)
IAsyncResult Pattern ou Asynchronous Programming Model (APM)Rogério Moraes de Carvalho
 
O que há de novo no PHP 5.3
O que há de novo no PHP 5.3O que há de novo no PHP 5.3
O que há de novo no PHP 5.3Jose Berardo
 

Tendances (19)

Java recursos avançados - socket connection
Java   recursos avançados - socket connectionJava   recursos avançados - socket connection
Java recursos avançados - socket connection
 
Aop Aspect J 1.5.4 Capitulo 02
Aop Aspect J 1.5.4 Capitulo 02Aop Aspect J 1.5.4 Capitulo 02
Aop Aspect J 1.5.4 Capitulo 02
 
Testes em go
Testes em goTestes em go
Testes em go
 
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
Programação assíncrona com C# 5 no Visual Studio 2013 [MVP ShowCast 2013 - DE...
 
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
 
5423 c ou c++
5423 c ou c++5423 c ou c++
5423 c ou c++
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnit
 
Flutter do zero a publicacao
Flutter do zero a publicacaoFlutter do zero a publicacao
Flutter do zero a publicacao
 
Design Patterns na Programação de Jogo
Design Patterns na Programação de JogoDesign Patterns na Programação de Jogo
Design Patterns na Programação de Jogo
 
Flutter do zero a publicacao
Flutter do zero a publicacaoFlutter do zero a publicacao
Flutter do zero a publicacao
 
Flutter do zero a publicacao
Flutter do zero a publicacaoFlutter do zero a publicacao
Flutter do zero a publicacao
 
[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...
[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...
[JS EXPERIENCE 2018] Uma visão geral sobre recursão e trampolines - Ana Basto...
 
Oficina de Web Design Lecom - PHP e JavaScript
Oficina de Web Design Lecom - PHP e JavaScriptOficina de Web Design Lecom - PHP e JavaScript
Oficina de Web Design Lecom - PHP e JavaScript
 
Aop Aspect J 1.5.4 Capitulo 04
Aop Aspect J 1.5.4 Capitulo 04Aop Aspect J 1.5.4 Capitulo 04
Aop Aspect J 1.5.4 Capitulo 04
 
Curso avançado de c++ em portugues
Curso avançado de c++ em portuguesCurso avançado de c++ em portugues
Curso avançado de c++ em portugues
 
UFCG.JCert Reunião 1 - Declarações e Controle de Acesso
UFCG.JCert Reunião 1 - Declarações e Controle de AcessoUFCG.JCert Reunião 1 - Declarações e Controle de Acesso
UFCG.JCert Reunião 1 - Declarações e Controle de Acesso
 
IAsyncResult Pattern ou Asynchronous Programming Model (APM)
IAsyncResult Pattern ou Asynchronous Programming Model (APM)IAsyncResult Pattern ou Asynchronous Programming Model (APM)
IAsyncResult Pattern ou Asynchronous Programming Model (APM)
 
Novidades do Java 8
Novidades do Java 8Novidades do Java 8
Novidades do Java 8
 
O que há de novo no PHP 5.3
O que há de novo no PHP 5.3O que há de novo no PHP 5.3
O que há de novo no PHP 5.3
 

En vedette

Descripción de la reunión previa
Descripción de la reunión previaDescripción de la reunión previa
Descripción de la reunión previaDiana Martinez
 
Aprendendo a viver com a Gramática
Aprendendo a viver com a GramáticaAprendendo a viver com a Gramática
Aprendendo a viver com a Gramáticajosimar_curvelo
 
Texto osmar fávero materiais didáticos dia 06 de setembro
Texto osmar fávero materiais didáticos   dia 06 de setembroTexto osmar fávero materiais didáticos   dia 06 de setembro
Texto osmar fávero materiais didáticos dia 06 de setembroProfesonline
 
Accesorios a tu moda.
Accesorios a tu moda.Accesorios a tu moda.
Accesorios a tu moda.Daniela Gomez
 
10 comportamientos digitales
10 comportamientos digitales10 comportamientos digitales
10 comportamientos digitalesIveth Laguna
 
Trabajo 2 de sismos(listo de enviar)
Trabajo 2 de sismos(listo de enviar)Trabajo 2 de sismos(listo de enviar)
Trabajo 2 de sismos(listo de enviar)forex46
 
Feudalismo e igreja medieval
Feudalismo e igreja medievalFeudalismo e igreja medieval
Feudalismo e igreja medievalprofcacocardozo
 
Boletín semanal de AXPE Consulting del 25/01/13
Boletín semanal de AXPE Consulting del 25/01/13Boletín semanal de AXPE Consulting del 25/01/13
Boletín semanal de AXPE Consulting del 25/01/13AXPE Consulting
 
117 o senhor salva a todo o pecador
117   o senhor salva a todo o pecador117   o senhor salva a todo o pecador
117 o senhor salva a todo o pecadorAlexandre Vagner
 
Pesquisa qualitativa com texto, imagem e som cap 5
Pesquisa qualitativa com texto, imagem e som   cap 5Pesquisa qualitativa com texto, imagem e som   cap 5
Pesquisa qualitativa com texto, imagem e som cap 5Profesonline
 

En vedette (20)

Descripción de la reunión previa
Descripción de la reunión previaDescripción de la reunión previa
Descripción de la reunión previa
 
013 jesus comprou-me
013   jesus comprou-me013   jesus comprou-me
013 jesus comprou-me
 
Aprendendo a viver com a Gramática
Aprendendo a viver com a GramáticaAprendendo a viver com a Gramática
Aprendendo a viver com a Gramática
 
Texto osmar fávero materiais didáticos dia 06 de setembro
Texto osmar fávero materiais didáticos   dia 06 de setembroTexto osmar fávero materiais didáticos   dia 06 de setembro
Texto osmar fávero materiais didáticos dia 06 de setembro
 
Accesorios a tu moda.
Accesorios a tu moda.Accesorios a tu moda.
Accesorios a tu moda.
 
Dr auto & casa presentacion oficial de franquicia
Dr auto & casa presentacion oficial de franquiciaDr auto & casa presentacion oficial de franquicia
Dr auto & casa presentacion oficial de franquicia
 
Resultados segundo os alunos de automação
Resultados segundo os alunos de automaçãoResultados segundo os alunos de automação
Resultados segundo os alunos de automação
 
055 mais perto da cruz
055   mais perto da cruz055   mais perto da cruz
055 mais perto da cruz
 
10 comportamientos digitales
10 comportamientos digitales10 comportamientos digitales
10 comportamientos digitales
 
Trabajo 2 de sismos(listo de enviar)
Trabajo 2 de sismos(listo de enviar)Trabajo 2 de sismos(listo de enviar)
Trabajo 2 de sismos(listo de enviar)
 
Desarrollo local en europa
Desarrollo local en europaDesarrollo local en europa
Desarrollo local en europa
 
Decreto de ampliação 2003
Decreto de ampliação 2003Decreto de ampliação 2003
Decreto de ampliação 2003
 
Feudalismo e igreja medieval
Feudalismo e igreja medievalFeudalismo e igreja medieval
Feudalismo e igreja medieval
 
Boletín semanal de AXPE Consulting del 25/01/13
Boletín semanal de AXPE Consulting del 25/01/13Boletín semanal de AXPE Consulting del 25/01/13
Boletín semanal de AXPE Consulting del 25/01/13
 
Porqué los jueves de lucha
Porqué los jueves de luchaPorqué los jueves de lucha
Porqué los jueves de lucha
 
117 o senhor salva a todo o pecador
117   o senhor salva a todo o pecador117   o senhor salva a todo o pecador
117 o senhor salva a todo o pecador
 
057 vivifica-nos, senhor
057   vivifica-nos, senhor057   vivifica-nos, senhor
057 vivifica-nos, senhor
 
Pesquisa qualitativa com texto, imagem e som cap 5
Pesquisa qualitativa com texto, imagem e som   cap 5Pesquisa qualitativa com texto, imagem e som   cap 5
Pesquisa qualitativa com texto, imagem e som cap 5
 
Apresentação Agita
Apresentação AgitaApresentação Agita
Apresentação Agita
 
Açores
AçoresAçores
Açores
 

Similaire à Apresentaodesignpatterns1 110109115005-phpapp02

TDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacaoTDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacaotdc-globalcode
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javJulio Viegas
 
Interfaces e Polimorfismo - Preparatório Certificação - OCAJP7 - Aula 1 - C
Interfaces e Polimorfismo - Preparatório Certificação - OCAJP7 - Aula 1 - CInterfaces e Polimorfismo - Preparatório Certificação - OCAJP7 - Aula 1 - C
Interfaces e Polimorfismo - Preparatório Certificação - OCAJP7 - Aula 1 - CPaulo Henrique Lerbach Rodrigues
 
Groovy para javeiros - Migração Painless
Groovy para javeiros - Migração PainlessGroovy para javeiros - Migração Painless
Groovy para javeiros - Migração PainlessRafael Farias Silva
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitDiego Tremper
 
Design fachada e Método Gabarito
Design fachada e Método GabaritoDesign fachada e Método Gabarito
Design fachada e Método Gabaritorobson santiago
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Android DevConference - Dagger 2: uso avançado em projetos Android
Android DevConference - Dagger 2: uso avançado em projetos AndroidAndroid DevConference - Dagger 2: uso avançado em projetos Android
Android DevConference - Dagger 2: uso avançado em projetos AndroidiMasters
 
[CLPE] Design patterns com c#
[CLPE] Design patterns com c#[CLPE] Design patterns com c#
[CLPE] Design patterns com c#Felipe Pimentel
 
Jdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITYJdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITYraquelcarsi
 
Java - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosJava - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosMoises Omena
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkPablo Dall'Oglio
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Willian Magalhães
 
Membros da Classe - Preparatório Certificação - OCAJP7 - Aula 2 - D
Membros da Classe - Preparatório Certificação - OCAJP7 - Aula 2 - DMembros da Classe - Preparatório Certificação - OCAJP7 - Aula 2 - D
Membros da Classe - Preparatório Certificação - OCAJP7 - Aula 2 - DPaulo Henrique Lerbach Rodrigues
 
AspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em JavaAspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em Javaelliando dias
 

Similaire à Apresentaodesignpatterns1 110109115005-phpapp02 (20)

TDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacaoTDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
 
Git, GitHub e OO
Git, GitHub e OOGit, GitHub e OO
Git, GitHub e OO
 
Interfaces e Polimorfismo - Preparatório Certificação - OCAJP7 - Aula 1 - C
Interfaces e Polimorfismo - Preparatório Certificação - OCAJP7 - Aula 1 - CInterfaces e Polimorfismo - Preparatório Certificação - OCAJP7 - Aula 1 - C
Interfaces e Polimorfismo - Preparatório Certificação - OCAJP7 - Aula 1 - C
 
Groovy para javeiros - Migração Painless
Groovy para javeiros - Migração PainlessGroovy para javeiros - Migração Painless
Groovy para javeiros - Migração Painless
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnit
 
Design fachada e Método Gabarito
Design fachada e Método GabaritoDesign fachada e Método Gabarito
Design fachada e Método Gabarito
 
VRaptor4
VRaptor4VRaptor4
VRaptor4
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Android DevConference - Dagger 2: uso avançado em projetos Android
Android DevConference - Dagger 2: uso avançado em projetos AndroidAndroid DevConference - Dagger 2: uso avançado em projetos Android
Android DevConference - Dagger 2: uso avançado em projetos Android
 
A Revolução dos Middlewares
A Revolução dos MiddlewaresA Revolução dos Middlewares
A Revolução dos Middlewares
 
[CLPE] Design patterns com c#
[CLPE] Design patterns com c#[CLPE] Design patterns com c#
[CLPE] Design patterns com c#
 
Jdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITYJdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITY
 
Java - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a ObjetosJava - Aula 2 - Orientado a Objetos
Java - Aula 2 - Orientado a Objetos
 
Padrão de Projeto Facade
Padrão de Projeto FacadePadrão de Projeto Facade
Padrão de Projeto Facade
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
 
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)Curso Desenvolvimento WEB com PHP - PHP (parte 1)
Curso Desenvolvimento WEB com PHP - PHP (parte 1)
 
Java hidden features
Java hidden featuresJava hidden features
Java hidden features
 
Membros da Classe - Preparatório Certificação - OCAJP7 - Aula 2 - D
Membros da Classe - Preparatório Certificação - OCAJP7 - Aula 2 - DMembros da Classe - Preparatório Certificação - OCAJP7 - Aula 2 - D
Membros da Classe - Preparatório Certificação - OCAJP7 - Aula 2 - D
 
AspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em JavaAspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em Java
 

Apresentaodesignpatterns1 110109115005-phpapp02

  • 2. Padrão adaptador Se resume em converter uma interface de uma classe para outra interface que o cliente espera encontrar. O adaptador permite que classes com interfaces incompatíveis trabalhem juntas.
  • 3. Classe A Adaptador Classe B
  • 4. public interface Pato { publicvoidquack(); publicvoidfly(); }
  • 5. public class PatoBravo implements Pato { @Override publicvoidquack() { System.out.println("Quack"); } @Override publicvoidfly() { System.out.println("Fly"); } }
  • 6. public interface Peru { publicvoid gorgolejar(); publicvoidfly(); }
  • 7. public class PeruComumimplements Peru { @Override publicvoid gorgolejar() { System.out.println("Glu - Glu"); } @Override publicvoidfly() { System.out.println("Peru comum voando"); } }
  • 8. publicclassPeruAdaptadorimplements Pato { private Peru peru; publicPeruAdaptador(Peru peru) { this.peru = peru; } @Override publicvoidquack() { peru.gorgolejar(); } @Override publicvoidfly() { for (int i = 0; i < 5; i++) { peru.fly(); } } }
  • 9. publicclassPatoTest { public static void main(String[] args) { PatoBravopatoBravo = newPatoBravo(); PeruComumperuComum= newPeruComum(); Pato peruAdaptado = newPeruAdaptador(peruComum); System.out.println("Testando peru comum"); peruComum.gorgolejar(); peruComum.fly(); System.out.println("Testando o pato bravo"); testPato(patoBravo); System.out.println("Testando o peru disfarçado de pato"); testPato(peruAdaptado); staticvoidtestPato(Pato pato){ pato.quack(); pato.fly();}
  • 10. Testando peru adaptado Glu - Glu Peru adaptado Testando o pato bravo Quack Fly Testando o peru disfarçado de pato Glu - Glu Peru adaptado Peru adaptado Peru adaptado Peru adaptado Peru adaptado
  • 11. Existe também o adaptador de classes, porem não é possível utiliza-lo com o java. O motivo é que ele requer herança multipla, o que até então ainda não é possível no java. A principal diferença é que ao invés de utilizar a composição como faz o adaptador de objetos, o adaptador de classes utiliza a herança, assim podendo ter acesso as chamadas do métodos.
  • 12.
  • 13. public class EnumerationIterator implements Iterator<Object> { privateEnumeration<Object> enumeration; publicEnumerationIterator(Enumeration<Object> enumeration) this.enumeration = enumeration; @Override publicbooleanhasNext() returnenumeration.hasMoreElements(); @Override publicObjectnext() returnenumeration.nextElement(); @Override publicvoid remove() { thrownewUnsupportedOperationException(); }