SlideShare uma empresa Scribd logo
1 de 19
Design Patterns
Padrão fachada (FACADE)	 Fornece uma interface unificada para um conjunto de interfaces em um subsistema. A  Fachada define uma interface de nível mais alto que facilita a utilização do subsistema.
publicclassHomeTheaterFacade { DvdPlayerdvdPlayer; LuzAmbienteluzAmbiente; MaquinaDePipocamaquinaDePipoca; publicHomeTheaterFacade(DvdPlayerdvdPlayer, LuzAmbienteluzAmbiente, MaquinaDePipocamaquinaDePipoca) { this.dvdPlayer = dvdPlayer; this.luzAmbiente = luzAmbiente; this.maquinaDePipoca = maquinaDePipoca;
publicvoidassistirFilme(String filme){ 	System.out.println("Começando a assistir um filme..."); this.maquinaDePipoca.on(); this.maquinaDePipoca.preparandoPipoca(); this.luzAmbiente.reduzirLuminosidade();
publicvoid desligar(){ 	System.out.println("Desligando......"); this.maquinaDePipoca.off(); this.luzAmbiente.aumentarLuminosidade(); this.dvdPlayer.stop(); this.dvdPlayer.ejetarFilme(); this.dvdPlayer.off();
Começando a assistir um filme... Ligando maquina de pipoca Preparando pipoca Reduzindo luminosidade Dvd ligado O filme A volta dos que não foram começou.
	Desligando...... 	Desligando maquina de pipoca 	Aumentando luminosidade 	Pausando filme 	Ejetando o filme do DVD Dvd desligado
Padrão Método-Gabarito Define o esqueleto de um algoritmo dentro de um método, transferindo alguns de seus passos para as subclasses. O Método-Gabarito permite que as subclasses redefinam certos passos de um algoritmo sem alterar a estrutura do próprio algoritmo.
publicclassCafe voidprepararCafe() this.ferverAgua(); this.misturarCafeNaAguaFervida(); this.colocarCafeNaXicara(); this.acrescentarAcucarELeite(); privatevoidacrescentarAcucarELeite()  	System.out.println("Acrescentando açúcar e leite."); privatevoidcolocarCafeNaXicara()  	System.out.println("Colocando café na xícara."); privatevoidmisturarCafeNaAguaFervida()  	System.out.println("Misturando o café"); privatevoidferverAgua()  	System.out.println("Fervendo um pouco de agua.");
publicclassCha voidprepararCha() this.ferverAgua(); this.colocarChaNaAguaQuente(); this.colocarChaNaXicara(); this.acrescentarLimao(); privatevoidacrescentarLimao()  	System.out.println("Acrescentando limão."); privatevoidcolocarChaNaXicara()  	System.out.println("Colocando cha na xícara."); privatevoidcolocarChaNaAguaQuente()  	System.out.println("Colocando cha na agua quente."); privatevoidferverAgua()  	System.out.println("Fervendo agua.");
public abstract class Gabarito  final voidprepararBebida() this.aquecerAgua(); this.colocarCondimentoNaAguaFervendo(); this.colocarBebidaNaXicara(); this.adicionarCondimentos(); abstract voidcolocarCondimentoNaAguaFervendo(); abstract voidadicionarCondimentos(); privatevoidcolocarBebidaNaXicara()  	 System.out.println("Colocando bebida na xicara"); privatevoidaquecerAgua()  	 System.out.println("Aquecendo a agua.");
public class Cafe extends Gabarito 	@Override voidcolocarCondimentoNaAguaFervendo()  		System.out.println("Misturando o café na água fervendo"); 	@Override voidadicionarCondimentos() { 		System.out.println("Acrescentando açúcar 	e leite.");
public class Cha extends Gabarito @Override voidcolocarCondimentoNaAguaFervendo()  	System.out.println("Colocando cha na água quente."); @Override voidadicionarCondimentos()  	System.out.println("Acrescentando limão.");
Método Gancho 	É um método que é declarado na classe gabarito, ele recebe como padrão uma implementação vazia. 	Esse método permite que as subclasses se conectem ao algoritmo em vários pontos, caso necessário.
public abstract class Gabarito  final voidprepararBebida() this.aquecerAgua(); this.colocarCondimentoNaAguaFervendo(); this.colocarBebidaNaXicara(); if(this.isComCondimentos()) this.adicionarCondimentos(); booleanisComCondimentos()      Método Gancho returntrue;
publicclassCafeUtilizandoGanchoextends Gabarito{ @Override voidcolocarCondimentoNaAguaFervendo()  	System.out.println("Colocando café na água fervendo"); @Override voidadicionarCondimentos()  	System.out.println("Adicionando leite e açúcar ao café"); @Override booleanisComCondimentos()  	String resposta = this.getRespostaDoCliente(); if(resposta.toLowerCase().startsWith("y")){ returntrue; 	}else{ returnfalse; private String getRespostaDoCliente() .............
Referências Padrões de Projeto- Eric Freeman e Elisabeth Freeman com Kathy Sierra e Bert Bates http://tocacomtexugo.blogspot.com/
Obrigado !

Mais conteúdo relacionado

Destaque

Como crear un Blog
Como crear un BlogComo crear un Blog
Como crear un BlogKary Cordova
 
Orientações pedagógicas inclusão digital
Orientações pedagógicas inclusão digitalOrientações pedagógicas inclusão digital
Orientações pedagógicas inclusão digitaldriminas
 
Ebook festajunina
Ebook festajuninaEbook festajunina
Ebook festajuninaAutonoma
 
18 de abril
18 de abril18 de abril
18 de abrilsandy
 
Programa jogos (versão 4)
Programa jogos (versão 4)Programa jogos (versão 4)
Programa jogos (versão 4)maframed
 
Curso Boi com Bula – Selecionando Reprodutores e Matrizes Funcionais
Curso Boi com Bula – Selecionando Reprodutores e Matrizes FuncionaisCurso Boi com Bula – Selecionando Reprodutores e Matrizes Funcionais
Curso Boi com Bula – Selecionando Reprodutores e Matrizes Funcionaisbrasilcomz® - Zootecnia Tropical
 
[Dicas l] virtual dub - compactando arquivos de video
[Dicas l] virtual dub - compactando arquivos de video[Dicas l] virtual dub - compactando arquivos de video
[Dicas l] virtual dub - compactando arquivos de videoJunior Lfg
 
Crise de 29
Crise de 29Crise de 29
Crise de 29CSD
 
041ca9ff8071ac94578780f526a3bea1
041ca9ff8071ac94578780f526a3bea1041ca9ff8071ac94578780f526a3bea1
041ca9ff8071ac94578780f526a3bea1Pavel Huanca
 
Cludia cozinha grandes receitas-sobremesas
Cludia cozinha grandes receitas-sobremesasCludia cozinha grandes receitas-sobremesas
Cludia cozinha grandes receitas-sobremesasAutonoma
 
Miolo fluxo
Miolo fluxoMiolo fluxo
Miolo fluxoAutonoma
 

Destaque (20)

Padrão Estado
Padrão EstadoPadrão Estado
Padrão Estado
 
Como crear un Blog
Como crear un BlogComo crear un Blog
Como crear un Blog
 
La evaluación para el aprendizaje
La evaluación para el aprendizajeLa evaluación para el aprendizaje
La evaluación para el aprendizaje
 
Cardapios Fevereiro
Cardapios FevereiroCardapios Fevereiro
Cardapios Fevereiro
 
Dizipia
DizipiaDizipia
Dizipia
 
Diseño curricular nacional
Diseño curricular nacionalDiseño curricular nacional
Diseño curricular nacional
 
Orientações pedagógicas inclusão digital
Orientações pedagógicas inclusão digitalOrientações pedagógicas inclusão digital
Orientações pedagógicas inclusão digital
 
Sociologia NEJA I
Sociologia NEJA ISociologia NEJA I
Sociologia NEJA I
 
Ebook festajunina
Ebook festajuninaEbook festajunina
Ebook festajunina
 
Mapas mentales
Mapas mentalesMapas mentales
Mapas mentales
 
18 de abril
18 de abril18 de abril
18 de abril
 
Programa jogos (versão 4)
Programa jogos (versão 4)Programa jogos (versão 4)
Programa jogos (versão 4)
 
Genda
GendaGenda
Genda
 
Curso Boi com Bula – Selecionando Reprodutores e Matrizes Funcionais
Curso Boi com Bula – Selecionando Reprodutores e Matrizes FuncionaisCurso Boi com Bula – Selecionando Reprodutores e Matrizes Funcionais
Curso Boi com Bula – Selecionando Reprodutores e Matrizes Funcionais
 
Ayuda 1
Ayuda 1Ayuda 1
Ayuda 1
 
[Dicas l] virtual dub - compactando arquivos de video
[Dicas l] virtual dub - compactando arquivos de video[Dicas l] virtual dub - compactando arquivos de video
[Dicas l] virtual dub - compactando arquivos de video
 
Crise de 29
Crise de 29Crise de 29
Crise de 29
 
041ca9ff8071ac94578780f526a3bea1
041ca9ff8071ac94578780f526a3bea1041ca9ff8071ac94578780f526a3bea1
041ca9ff8071ac94578780f526a3bea1
 
Cludia cozinha grandes receitas-sobremesas
Cludia cozinha grandes receitas-sobremesasCludia cozinha grandes receitas-sobremesas
Cludia cozinha grandes receitas-sobremesas
 
Miolo fluxo
Miolo fluxoMiolo fluxo
Miolo fluxo
 

Semelhante a Design fachada e Método Gabarito

Apresentaodesignpatterns1 110109115005-phpapp02
Apresentaodesignpatterns1 110109115005-phpapp02Apresentaodesignpatterns1 110109115005-phpapp02
Apresentaodesignpatterns1 110109115005-phpapp02Nádia Rodrigues
 
Apresentação Design Adaptador
Apresentação Design AdaptadorApresentação Design Adaptador
Apresentação Design Adaptadorrobson santiago
 
Jdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITYJdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITYraquelcarsi
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javJulio Viegas
 
Graphics Capabilities of Java Platform
Graphics Capabilities of Java PlatformGraphics Capabilities of Java Platform
Graphics Capabilities of Java PlatformMichel Alves
 
Applets e Java web start
Applets e Java web startApplets e Java web start
Applets e Java web startArtur Rodrigues
 
Introdução ao CMake
Introdução ao CMakeIntrodução ao CMake
Introdução ao CMakePaulo Remoli
 
06 breve histórico do action script - Flash 8
06 breve histórico do action script - Flash 806 breve histórico do action script - Flash 8
06 breve histórico do action script - Flash 8Reuel Lopes
 
Como construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsComo construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsDenis L Presciliano
 
Como construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsComo construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsDenis L Presciliano
 
[Android devcamp] Android Bootcamp – 2012
[Android devcamp] Android Bootcamp – 2012[Android devcamp] Android Bootcamp – 2012
[Android devcamp] Android Bootcamp – 2012Douglas Drumond
 
Desenvolvimento de Aplicacoes de TV interactiva na plataforma MEO IPTV
Desenvolvimento de Aplicacoes de TV interactiva na plataforma MEO IPTVDesenvolvimento de Aplicacoes de TV interactiva na plataforma MEO IPTV
Desenvolvimento de Aplicacoes de TV interactiva na plataforma MEO IPTVmulder3
 
Minicurso Play Framework - Tão fácil que nem parece Java
Minicurso Play Framework - Tão fácil que nem parece JavaMinicurso Play Framework - Tão fácil que nem parece Java
Minicurso Play Framework - Tão fácil que nem parece JavaWandesson Soares
 
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5Willian Molinari
 

Semelhante a Design fachada e Método Gabarito (20)

Padrão de Projeto Facade
Padrão de Projeto FacadePadrão de Projeto Facade
Padrão de Projeto Facade
 
Padrão Fachada
Padrão FachadaPadrão Fachada
Padrão Fachada
 
Apresentaodesignpatterns1 110109115005-phpapp02
Apresentaodesignpatterns1 110109115005-phpapp02Apresentaodesignpatterns1 110109115005-phpapp02
Apresentaodesignpatterns1 110109115005-phpapp02
 
Apresentação Design Adaptador
Apresentação Design AdaptadorApresentação Design Adaptador
Apresentação Design Adaptador
 
Curso de Java #05 - Swing e JavaFX
Curso de Java #05 - Swing e JavaFXCurso de Java #05 - Swing e JavaFX
Curso de Java #05 - Swing e JavaFX
 
Jdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITYJdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITY
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
 
GUI Aplicações Gráficas
GUI Aplicações Gráficas GUI Aplicações Gráficas
GUI Aplicações Gráficas
 
Docker: uma visão geral
Docker: uma visão geralDocker: uma visão geral
Docker: uma visão geral
 
Graphics Capabilities of Java Platform
Graphics Capabilities of Java PlatformGraphics Capabilities of Java Platform
Graphics Capabilities of Java Platform
 
Applets e Java web start
Applets e Java web startApplets e Java web start
Applets e Java web start
 
Introdução ao CMake
Introdução ao CMakeIntrodução ao CMake
Introdução ao CMake
 
06 breve histórico do action script - Flash 8
06 breve histórico do action script - Flash 806 breve histórico do action script - Flash 8
06 breve histórico do action script - Flash 8
 
Como construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsComo construir aplicações gráficas e applets
Como construir aplicações gráficas e applets
 
Como construir aplicações gráficas e applets
Como construir aplicações gráficas e appletsComo construir aplicações gráficas e applets
Como construir aplicações gráficas e applets
 
Cygwin
CygwinCygwin
Cygwin
 
[Android devcamp] Android Bootcamp – 2012
[Android devcamp] Android Bootcamp – 2012[Android devcamp] Android Bootcamp – 2012
[Android devcamp] Android Bootcamp – 2012
 
Desenvolvimento de Aplicacoes de TV interactiva na plataforma MEO IPTV
Desenvolvimento de Aplicacoes de TV interactiva na plataforma MEO IPTVDesenvolvimento de Aplicacoes de TV interactiva na plataforma MEO IPTV
Desenvolvimento de Aplicacoes de TV interactiva na plataforma MEO IPTV
 
Minicurso Play Framework - Tão fácil que nem parece Java
Minicurso Play Framework - Tão fácil que nem parece JavaMinicurso Play Framework - Tão fácil que nem parece Java
Minicurso Play Framework - Tão fácil que nem parece Java
 
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
TDC2011 - Desenvolvimento de jogos com Javascript e HTML5
 

Design fachada e Método Gabarito

  • 2. Padrão fachada (FACADE) Fornece uma interface unificada para um conjunto de interfaces em um subsistema. A Fachada define uma interface de nível mais alto que facilita a utilização do subsistema.
  • 3.
  • 4. publicclassHomeTheaterFacade { DvdPlayerdvdPlayer; LuzAmbienteluzAmbiente; MaquinaDePipocamaquinaDePipoca; publicHomeTheaterFacade(DvdPlayerdvdPlayer, LuzAmbienteluzAmbiente, MaquinaDePipocamaquinaDePipoca) { this.dvdPlayer = dvdPlayer; this.luzAmbiente = luzAmbiente; this.maquinaDePipoca = maquinaDePipoca;
  • 5. publicvoidassistirFilme(String filme){ System.out.println("Começando a assistir um filme..."); this.maquinaDePipoca.on(); this.maquinaDePipoca.preparandoPipoca(); this.luzAmbiente.reduzirLuminosidade();
  • 6. publicvoid desligar(){ System.out.println("Desligando......"); this.maquinaDePipoca.off(); this.luzAmbiente.aumentarLuminosidade(); this.dvdPlayer.stop(); this.dvdPlayer.ejetarFilme(); this.dvdPlayer.off();
  • 7. Começando a assistir um filme... Ligando maquina de pipoca Preparando pipoca Reduzindo luminosidade Dvd ligado O filme A volta dos que não foram começou.
  • 8. Desligando...... Desligando maquina de pipoca Aumentando luminosidade Pausando filme Ejetando o filme do DVD Dvd desligado
  • 9. Padrão Método-Gabarito Define o esqueleto de um algoritmo dentro de um método, transferindo alguns de seus passos para as subclasses. O Método-Gabarito permite que as subclasses redefinam certos passos de um algoritmo sem alterar a estrutura do próprio algoritmo.
  • 10. publicclassCafe voidprepararCafe() this.ferverAgua(); this.misturarCafeNaAguaFervida(); this.colocarCafeNaXicara(); this.acrescentarAcucarELeite(); privatevoidacrescentarAcucarELeite() System.out.println("Acrescentando açúcar e leite."); privatevoidcolocarCafeNaXicara() System.out.println("Colocando café na xícara."); privatevoidmisturarCafeNaAguaFervida() System.out.println("Misturando o café"); privatevoidferverAgua() System.out.println("Fervendo um pouco de agua.");
  • 11. publicclassCha voidprepararCha() this.ferverAgua(); this.colocarChaNaAguaQuente(); this.colocarChaNaXicara(); this.acrescentarLimao(); privatevoidacrescentarLimao() System.out.println("Acrescentando limão."); privatevoidcolocarChaNaXicara() System.out.println("Colocando cha na xícara."); privatevoidcolocarChaNaAguaQuente() System.out.println("Colocando cha na agua quente."); privatevoidferverAgua() System.out.println("Fervendo agua.");
  • 12. public abstract class Gabarito final voidprepararBebida() this.aquecerAgua(); this.colocarCondimentoNaAguaFervendo(); this.colocarBebidaNaXicara(); this.adicionarCondimentos(); abstract voidcolocarCondimentoNaAguaFervendo(); abstract voidadicionarCondimentos(); privatevoidcolocarBebidaNaXicara() System.out.println("Colocando bebida na xicara"); privatevoidaquecerAgua() System.out.println("Aquecendo a agua.");
  • 13. public class Cafe extends Gabarito @Override voidcolocarCondimentoNaAguaFervendo() System.out.println("Misturando o café na água fervendo"); @Override voidadicionarCondimentos() { System.out.println("Acrescentando açúcar e leite.");
  • 14. public class Cha extends Gabarito @Override voidcolocarCondimentoNaAguaFervendo() System.out.println("Colocando cha na água quente."); @Override voidadicionarCondimentos() System.out.println("Acrescentando limão.");
  • 15. Método Gancho É um método que é declarado na classe gabarito, ele recebe como padrão uma implementação vazia. Esse método permite que as subclasses se conectem ao algoritmo em vários pontos, caso necessário.
  • 16. public abstract class Gabarito final voidprepararBebida() this.aquecerAgua(); this.colocarCondimentoNaAguaFervendo(); this.colocarBebidaNaXicara(); if(this.isComCondimentos()) this.adicionarCondimentos(); booleanisComCondimentos()  Método Gancho returntrue;
  • 17. publicclassCafeUtilizandoGanchoextends Gabarito{ @Override voidcolocarCondimentoNaAguaFervendo() System.out.println("Colocando café na água fervendo"); @Override voidadicionarCondimentos() System.out.println("Adicionando leite e açúcar ao café"); @Override booleanisComCondimentos() String resposta = this.getRespostaDoCliente(); if(resposta.toLowerCase().startsWith("y")){ returntrue; }else{ returnfalse; private String getRespostaDoCliente() .............
  • 18. Referências Padrões de Projeto- Eric Freeman e Elisabeth Freeman com Kathy Sierra e Bert Bates http://tocacomtexugo.blogspot.com/