Design Patterns<br />
Padrão fachada (FACADE)	<br />Fornece uma interface unificada para um conjunto de interfaces em um subsistema.<br />A  Fac...
publicclassHomeTheaterFacade {<br />DvdPlayerdvdPlayer;<br />LuzAmbienteluzAmbiente;<br />MaquinaDePipocamaquinaDePipoca;<...
publicvoidassistirFilme(String filme){<br />	System.out.println("Começando a assistir um filme...");<br />this.maquinaDePi...
publicvoid desligar(){<br />	System.out.println("Desligando......");<br />this.maquinaDePipoca.off();<br />this.luzAmbient...
Começando a assistir um filme...<br />Ligando maquina de pipoca<br />Preparando pipoca<br />Reduzindo luminosidade<br />Dv...
	Desligando......<br />	Desligando maquina de pipoca<br />	Aumentando luminosidade<br />	Pausando filme<br />	Ejetando o f...
Padrão Método-Gabarito<br />Define o esqueleto de um algoritmo dentro de um método, transferindo alguns de seus passos par...
publicclassCafe<br />voidprepararCafe()<br />this.ferverAgua();<br />this.misturarCafeNaAguaFervida();<br />this.colocarCa...
publicclassCha<br />voidprepararCha()<br />this.ferverAgua();<br />this.colocarChaNaAguaQuente();<br />this.colocarChaNaXi...
public abstract class Gabarito <br />final voidprepararBebida()<br />this.aquecerAgua();<br />this.colocarCondimentoNaAgua...
public class Cafe extends Gabarito<br />	@Override<br />voidcolocarCondimentoNaAguaFervendo() <br />		System.out.println("...
public class Cha extends Gabarito<br />@Override<br />voidcolocarCondimentoNaAguaFervendo() <br />	System.out.println("Col...
Método Gancho<br />	É um método que é declarado na classe gabarito, ele recebe como padrão uma implementação vazia.<br />	...
public abstract class Gabarito <br />final voidprepararBebida()<br />this.aquecerAgua();<br />this.colocarCondimentoNaAgua...
publicclassCafeUtilizandoGanchoextends Gabarito{<br />@Override<br />voidcolocarCondimentoNaAguaFervendo() <br />	System.o...
Referências<br />Padrões de Projeto- Eric Freeman e Elisabeth Freeman com Kathy Sierra e Bert Bates<br />http://tocacomtex...
Obrigado !<br />
Próximos SlideShares
Carregando em…5
×

Design fachada e Método Gabarito

1.691 visualizações

Publicada em

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.691
No SlideShare
0
A partir de incorporações
0
Número de incorporações
179
Ações
Compartilhamentos
0
Downloads
15
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Design fachada e Método Gabarito

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

×