Your SlideShare is downloading. ×
0
Design fachada e Método Gabarito
Design fachada e Método Gabarito
Design fachada e Método Gabarito
Design fachada e Método Gabarito
Design fachada e Método Gabarito
Design fachada e Método Gabarito
Design fachada e Método Gabarito
Design fachada e Método Gabarito
Design fachada e Método Gabarito
Design fachada e Método Gabarito
Design fachada e Método Gabarito
Design fachada e Método Gabarito
Design fachada e Método Gabarito
Design fachada e Método Gabarito
Design fachada e Método Gabarito
Design fachada e Método Gabarito
Design fachada e Método Gabarito
Design fachada e Método Gabarito
Design fachada e Método Gabarito
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Design fachada e Método Gabarito

1,364

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,364
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Design Patterns<br />
  • 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.
  • 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. publicvoidassistirFilme(String filme){<br /> System.out.println(&quot;Começando a assistir um filme...&quot;);<br />this.maquinaDePipoca.on();<br />this.maquinaDePipoca.preparandoPipoca();<br />this.luzAmbiente.reduzirLuminosidade();<br />
  • 6. publicvoid desligar(){<br /> System.out.println(&quot;Desligando......&quot;);<br />this.maquinaDePipoca.off();<br />this.luzAmbiente.aumentarLuminosidade();<br />this.dvdPlayer.stop();<br />this.dvdPlayer.ejetarFilme();<br />this.dvdPlayer.off();<br />
  • 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. Desligando......<br /> Desligando maquina de pipoca<br /> Aumentando luminosidade<br /> Pausando filme<br /> Ejetando o filme do DVD<br />Dvd desligado<br />
  • 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. publicclassCafe<br />voidprepararCafe()<br />this.ferverAgua();<br />this.misturarCafeNaAguaFervida();<br />this.colocarCafeNaXicara();<br />this.acrescentarAcucarELeite();<br />privatevoidacrescentarAcucarELeite() <br /> System.out.println(&quot;Acrescentando açúcar e leite.&quot;);<br />privatevoidcolocarCafeNaXicara() <br /> System.out.println(&quot;Colocando café na xícara.&quot;);<br />privatevoidmisturarCafeNaAguaFervida() <br /> System.out.println(&quot;Misturando o café&quot;);<br />privatevoidferverAgua() <br /> System.out.println(&quot;Fervendo um pouco de agua.&quot;);<br />
  • 11. publicclassCha<br />voidprepararCha()<br />this.ferverAgua();<br />this.colocarChaNaAguaQuente();<br />this.colocarChaNaXicara();<br />this.acrescentarLimao();<br />privatevoidacrescentarLimao() <br /> System.out.println(&quot;Acrescentando limão.&quot;);<br />privatevoidcolocarChaNaXicara() <br /> System.out.println(&quot;Colocando cha na xícara.&quot;);<br />privatevoidcolocarChaNaAguaQuente() <br /> System.out.println(&quot;Colocando cha na agua quente.&quot;);<br />privatevoidferverAgua() <br /> System.out.println(&quot;Fervendo agua.&quot;);<br />
  • 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(&quot;Colocando bebida na xicara&quot;);<br />privatevoidaquecerAgua() <br /> System.out.println(&quot;Aquecendo a agua.&quot;);<br />
  • 13. public class Cafe extends Gabarito<br /> @Override<br />voidcolocarCondimentoNaAguaFervendo() <br /> System.out.println(&quot;Misturando o café na água fervendo&quot;);<br /> @Override<br />voidadicionarCondimentos() {<br /> System.out.println(&quot;Acrescentando açúcar e leite.&quot;);<br />
  • 14. public class Cha extends Gabarito<br />@Override<br />voidcolocarCondimentoNaAguaFervendo() <br /> System.out.println(&quot;Colocando cha na água quente.&quot;);<br />@Override<br />voidadicionarCondimentos() <br /> System.out.println(&quot;Acrescentando limão.&quot;);<br />
  • 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. 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. publicclassCafeUtilizandoGanchoextends Gabarito{<br />@Override<br />voidcolocarCondimentoNaAguaFervendo() <br /> System.out.println(&quot;Colocando café na água fervendo&quot;);<br />@Override<br />voidadicionarCondimentos() <br /> System.out.println(&quot;Adicionando leite e açúcar ao café&quot;);<br />@Override<br />booleanisComCondimentos() <br /> String resposta = this.getRespostaDoCliente();<br />if(resposta.toLowerCase().startsWith(&quot;y&quot;)){<br />returntrue;<br /> }else{<br />returnfalse;<br />private String getRespostaDoCliente() .............<br />
  • 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. Obrigado !<br />

×