Design fachada e Método Gabarito
-
Upload
robson-santiago -
Category
Documents
-
view
1.376 -
download
3
Transcript of Design fachada e Método Gabarito
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.
public class HomeTheaterFacade {
DvdPlayer dvdPlayer;
LuzAmbiente luzAmbiente;
MaquinaDePipoca maquinaDePipoca;
public HomeTheaterFacade(DvdPlayer dvdPlayer, LuzAmbiente luzAmbiente, MaquinaDePipocamaquinaDePipoca) {
this.dvdPlayer = dvdPlayer;
this.luzAmbiente = luzAmbiente;
this.maquinaDePipoca = maquinaDePipoca;
public void assistirFilme(String filme){
System.out.println("Começando a assistir um filme...");
this.maquinaDePipoca.on();
this.maquinaDePipoca.preparandoPipoca();
this.luzAmbiente.reduzirLuminosidade();
public void 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.
public class Cafe
void prepararCafe()this.ferverAgua();this.misturarCafeNaAguaFervida();this.colocarCafeNaXicara();this.acrescentarAcucarELeite();
private void acrescentarAcucarELeite() System.out.println("Acrescentando açúcar e leite.");
private void colocarCafeNaXicara() System.out.println("Colocando café na xícara.");
private void misturarCafeNaAguaFervida() System.out.println("Misturando o café");
private void ferverAgua() System.out.println("Fervendo um pouco de agua.");
public class Chavoid prepararCha()
this.ferverAgua();this.colocarChaNaAguaQuente();this.colocarChaNaXicara();this.acrescentarLimao();
private void acrescentarLimao() System.out.println("Acrescentando limão.");
private void colocarChaNaXicara() System.out.println("Colocando cha na xícara.");
private void colocarChaNaAguaQuente() System.out.println("Colocando cha na agua quente.");
private void ferverAgua() System.out.println("Fervendo agua.");
public abstract class Gabarito final void prepararBebida()
this.aquecerAgua();this.colocarCondimentoNaAguaFervendo();this.colocarBebidaNaXicara();this.adicionarCondimentos();
abstract void colocarCondimentoNaAguaFervendo();
abstract void adicionarCondimentos();
private void colocarBebidaNaXicara() System.out.println("Colocando bebida na xicara");
private void aquecerAgua() System.out.println("Aquecendo a agua.");
public class Cafe extends Gabarito
@Override
void colocarCondimentoNaAguaFervendo()
System.out.println("Misturando o café na água fervendo");
@Override
void adicionarCondimentos() {
System.out.println("Acrescentando açúcar e leite.");
public class Cha extends Gabarito
@Override
void colocarCondimentoNaAguaFervendo()
System.out.println("Colocando cha na água quente.");
@Override
void adicionarCondimentos()
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 void prepararBebida()
this.aquecerAgua();
this.colocarCondimentoNaAguaFervendo();
this.colocarBebidaNaXicara();
if(this.isComCondimentos())
this.adicionarCondimentos();
boolean isComCondimentos() Método Gancho
return true;
public class CafeUtilizandoGancho extends Gabarito{@Overridevoid colocarCondimentoNaAguaFervendo()
System.out.println("Colocando café na água fervendo");
@Overridevoid adicionarCondimentos()
System.out.println("Adicionando leite e açúcar ao café");
@Overrideboolean isComCondimentos()
String resposta = this.getRespostaDoCliente();if(resposta.toLowerCase().startsWith("y")){
return true;}else{
return false;
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 !