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.
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.
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/