padrões de projeto aula 10 – padrão façade. padrÃo faÇade padrões de projeto - façade por...
TRANSCRIPT
![Page 1: Padrões de Projeto Aula 10 – Padrão Façade. PADRÃO FAÇADE Padrões de Projeto - Façade Por que não tornar as coisas mais simples? Alteração de uma interface](https://reader035.vdocuments.com.br/reader035/viewer/2022062302/5706386e1a28abb8239060ca/html5/thumbnails/1.jpg)
Padrões de ProjetoAula 10 – Padrão Façade
![Page 2: Padrões de Projeto Aula 10 – Padrão Façade. PADRÃO FAÇADE Padrões de Projeto - Façade Por que não tornar as coisas mais simples? Alteração de uma interface](https://reader035.vdocuments.com.br/reader035/viewer/2022062302/5706386e1a28abb8239060ca/html5/thumbnails/2.jpg)
Padr
ões d
e Pr
ojet
o - F
açad
e
PADRÃO FAÇADE
Por que não tornar as coisas mais simples?
Alteração de uma interface com a intenção de simplificá-la. Oculta a complexidade de um conjunto de Classes.
![Page 3: Padrões de Projeto Aula 10 – Padrão Façade. PADRÃO FAÇADE Padrões de Projeto - Façade Por que não tornar as coisas mais simples? Alteração de uma interface](https://reader035.vdocuments.com.br/reader035/viewer/2022062302/5706386e1a28abb8239060ca/html5/thumbnails/3.jpg)
Padr
ões d
e Pr
ojet
o - F
açad
e
Imagine um Home Theater
![Page 4: Padrões de Projeto Aula 10 – Padrão Façade. PADRÃO FAÇADE Padrões de Projeto - Façade Por que não tornar as coisas mais simples? Alteração de uma interface](https://reader035.vdocuments.com.br/reader035/viewer/2022062302/5706386e1a28abb8239060ca/html5/thumbnails/4.jpg)
Padr
ões d
e Pr
ojet
o - F
açad
e
Imagine um Home Theater
1. Muitas classes2. Muitas interações3. Você precisa saber o funcionamento de tudo para saber usar corretamente
1. Quais métodos chamar para assistir um filme?
![Page 5: Padrões de Projeto Aula 10 – Padrão Façade. PADRÃO FAÇADE Padrões de Projeto - Façade Por que não tornar as coisas mais simples? Alteração de uma interface](https://reader035.vdocuments.com.br/reader035/viewer/2022062302/5706386e1a28abb8239060ca/html5/thumbnails/5.jpg)
Padr
ões d
e Pr
ojet
o - F
açad
e
Para assistir um filme1. Ligar a máquina de pipoca2. Colocar a máquina de pipoca em funcionamento3. Reduzir as luzes4. Baixar a tela5. Ligar o projetor6. Configurar a entrada do projeto para DVD7. Colocar o projetor em modo wide-screen8. Ligar o amplificador de áudio9. Configurar a entrada do amplificador para DVD10. Configurar o amplificador para surround11. Ajustar o amplificador para o volume médio (5)12. Ligar o DVD Player13. Acionar o play no DVD Player
![Page 6: Padrões de Projeto Aula 10 – Padrão Façade. PADRÃO FAÇADE Padrões de Projeto - Façade Por que não tornar as coisas mais simples? Alteração de uma interface](https://reader035.vdocuments.com.br/reader035/viewer/2022062302/5706386e1a28abb8239060ca/html5/thumbnails/6.jpg)
Padr
ões d
e Pr
ojet
o - F
açad
e
Para assistir um filme (em Java)1. pipoqueira.ligar();2. pipoqueira.cozinhar();3. luz.dim(10);4. tela.descer();5. projetor.ligar();6. projetor.setInput(dvdPlayer);7. projetor.modoWideSreen();
8. amplificador.ligar();9. amplificador.setDVD(dvdPlayer);10. amplificador.setSurroundAudio()
;11. amplificador.setVolume(5);
12. dvdPlayer.ligar();13. dvdPlayer.play(filme);
1. Ligar a máquina de pipoca2. Colocar a máquina de pipoca em
funcionamento3. Reduzir as luzes4. Baixar a tela5. Ligar o projetor6. Configurar a entrada do projeto para
DVD7. Colocar o projetor em modo wide-
screen8. Ligar o amplificador de áudio9. Configurar a entrada do amplificador
para DVD10. Configurar o amplificador para
surround11. Ajustar o amplificador para o volume
médio (5)12. Ligar o DVD Player13. Acionar o play no DVD Player
![Page 7: Padrões de Projeto Aula 10 – Padrão Façade. PADRÃO FAÇADE Padrões de Projeto - Façade Por que não tornar as coisas mais simples? Alteração de uma interface](https://reader035.vdocuments.com.br/reader035/viewer/2022062302/5706386e1a28abb8239060ca/html5/thumbnails/7.jpg)
Padr
ões d
e Pr
ojet
o - F
açad
e
Ainda tem mais...• Neste tipo de situação ainda há uma ordem para fazer tudo• Ao final pode-se precisar fazer as ações em ordem inversa• E para ouvir um CD ou rádio?
• Se precisar atualizar o sistema terá que aprender um novo algoritmo
![Page 8: Padrões de Projeto Aula 10 – Padrão Façade. PADRÃO FAÇADE Padrões de Projeto - Façade Por que não tornar as coisas mais simples? Alteração de uma interface](https://reader035.vdocuments.com.br/reader035/viewer/2022062302/5706386e1a28abb8239060ca/html5/thumbnails/8.jpg)
Padr
ões d
e Pr
ojet
o - F
açad
e
Solução para a complexidade• A FACHADA
+
![Page 9: Padrões de Projeto Aula 10 – Padrão Façade. PADRÃO FAÇADE Padrões de Projeto - Façade Por que não tornar as coisas mais simples? Alteração de uma interface](https://reader035.vdocuments.com.br/reader035/viewer/2022062302/5706386e1a28abb8239060ca/html5/thumbnails/9.jpg)
Padr
ões d
e Pr
ojet
o - F
açad
e
A Fachada
• Uma classe que exponha somente alguns métodos simples:• assistirFilme()• pararFilme()
• Trata os componentes do Home Theater como um subsistema• Aciona as diversas partes necessárias para implementar o
método assistirFilme()
• O cliente assim pode usar os métodos da Fachada e não do subsistema
• Para assistir um filme basta acionar um método que se comunica com todo o subsistema
![Page 10: Padrões de Projeto Aula 10 – Padrão Façade. PADRÃO FAÇADE Padrões de Projeto - Façade Por que não tornar as coisas mais simples? Alteração de uma interface](https://reader035.vdocuments.com.br/reader035/viewer/2022062302/5706386e1a28abb8239060ca/html5/thumbnails/10.jpg)
Padr
ões d
e Pr
ojet
o - F
açad
e
Solução: a Fachada
![Page 11: Padrões de Projeto Aula 10 – Padrão Façade. PADRÃO FAÇADE Padrões de Projeto - Façade Por que não tornar as coisas mais simples? Alteração de uma interface](https://reader035.vdocuments.com.br/reader035/viewer/2022062302/5706386e1a28abb8239060ca/html5/thumbnails/11.jpg)
Padr
ões d
e Pr
ojet
o - F
açad
e
A Fachada• Preserva o acesso direto ao subsistema, mas...• Você ainda pode usar os métodos de cada aparelho
![Page 12: Padrões de Projeto Aula 10 – Padrão Façade. PADRÃO FAÇADE Padrões de Projeto - Façade Por que não tornar as coisas mais simples? Alteração de uma interface](https://reader035.vdocuments.com.br/reader035/viewer/2022062302/5706386e1a28abb8239060ca/html5/thumbnails/12.jpg)
Padr
ões d
e Pr
ojet
o - F
açad
e
Implementando a Fachada
![Page 13: Padrões de Projeto Aula 10 – Padrão Façade. PADRÃO FAÇADE Padrões de Projeto - Façade Por que não tornar as coisas mais simples? Alteração de uma interface](https://reader035.vdocuments.com.br/reader035/viewer/2022062302/5706386e1a28abb8239060ca/html5/thumbnails/13.jpg)
Padr
ões d
e Pr
ojet
o - F
açad
e
Implementando a Fachada
![Page 14: Padrões de Projeto Aula 10 – Padrão Façade. PADRÃO FAÇADE Padrões de Projeto - Façade Por que não tornar as coisas mais simples? Alteração de uma interface](https://reader035.vdocuments.com.br/reader035/viewer/2022062302/5706386e1a28abb8239060ca/html5/thumbnails/14.jpg)
Padr
ões d
e Pr
ojet
o - F
açad
e
Como a vovó assistiria o filme
![Page 15: Padrões de Projeto Aula 10 – Padrão Façade. PADRÃO FAÇADE Padrões de Projeto - Façade Por que não tornar as coisas mais simples? Alteração de uma interface](https://reader035.vdocuments.com.br/reader035/viewer/2022062302/5706386e1a28abb8239060ca/html5/thumbnails/15.jpg)
Padr
ões d
e Pr
ojet
o - F
açad
e
Questões sobre a Fachada• Encapsula as classes do subsistema?• Não. Apenas fornecem uma interface simplificada para acessar suas
funcionalidades. Mas, o cliente ainda pode acessar as funcionalidades do subsistema diretamente (por isso dizemos que o subsistema não é encapsulado);
• Acrescenta funcionalidade?• Nada impede que uma fachada incorpore sua “própria inteligência” além de
utilizar o subsistema;• Cada subsistema possui somente um fachada?• Não necessariamente. Ele pode ter quantas julgar necessário;
• Qual o benefício da fachada além de fornecer uma interface simples?• Baixo acoplamento. Suponha que você trocou o seu Home Theater todo,
comprando novos componentes com interfaces diferentes... Se o cliente estiver codificado acessando a fachada, ele não precisará ser alterado, apenas a fachada;
• Qual a diferença da Fachada para o Adapter?• O objetivo da fachada é simplificar o acesso, e o do adapter é alterar as interfaces
para tornar possível o acesso.
![Page 16: Padrões de Projeto Aula 10 – Padrão Façade. PADRÃO FAÇADE Padrões de Projeto - Façade Por que não tornar as coisas mais simples? Alteração de uma interface](https://reader035.vdocuments.com.br/reader035/viewer/2022062302/5706386e1a28abb8239060ca/html5/thumbnails/16.jpg)
Padr
ões d
e Pr
ojet
o - F
açad
e
Resumindo• As Fachadas, além de simplificar uma interface• Desconecta o cliente de um subsistema de componentes
• Uma Fachada simplifica e um Adapter converte uma interface para algo diferente
![Page 17: Padrões de Projeto Aula 10 – Padrão Façade. PADRÃO FAÇADE Padrões de Projeto - Façade Por que não tornar as coisas mais simples? Alteração de uma interface](https://reader035.vdocuments.com.br/reader035/viewer/2022062302/5706386e1a28abb8239060ca/html5/thumbnails/17.jpg)
Padr
ões d
e Pr
ojet
o - F
açad
e
Definição
O padrão Façade fornece uma interface unificada e simplificada para um conjunto de
interfaces em um subsistema. O Façade define uma interface de nível mais alto que facilita a
utilização do subsistema.
![Page 18: Padrões de Projeto Aula 10 – Padrão Façade. PADRÃO FAÇADE Padrões de Projeto - Façade Por que não tornar as coisas mais simples? Alteração de uma interface](https://reader035.vdocuments.com.br/reader035/viewer/2022062302/5706386e1a28abb8239060ca/html5/thumbnails/18.jpg)
Padr
ões d
e Pr
ojet
o - F
açad
e
Terminologia e Estrutura
![Page 19: Padrões de Projeto Aula 10 – Padrão Façade. PADRÃO FAÇADE Padrões de Projeto - Façade Por que não tornar as coisas mais simples? Alteração de uma interface](https://reader035.vdocuments.com.br/reader035/viewer/2022062302/5706386e1a28abb8239060ca/html5/thumbnails/19.jpg)
Padr
ões d
e Pr
ojet
o - F
açad
e
Participantes• Fachada• Conhece quais as classes do subsistema são responsáveis pelo
atendimento de uma solicitação• Classes de Subsistema• Implementam a funcionalidade do subsistema • Encarregam-se do trabalho atribuído a elas pelo objeto Fachada• Não têm conhecimento da Fachada, ou seja, não possuem
referência para a mesma
![Page 20: Padrões de Projeto Aula 10 – Padrão Façade. PADRÃO FAÇADE Padrões de Projeto - Façade Por que não tornar as coisas mais simples? Alteração de uma interface](https://reader035.vdocuments.com.br/reader035/viewer/2022062302/5706386e1a28abb8239060ca/html5/thumbnails/20.jpg)
Padr
ões d
e Pr
ojet
o - F
açad
e
Colaborações• Os clientes se comunicam com um subsistema através do
envio de solicitações para a Fachada, a qual repassa para os objetos apropriados do subsistema. Embora os objetos do subsistema executem o trabalho real, a fachada pode ter que efetuar trabalho próprio dela para traduzir a sua interface para as interfaces do subsistema;
• Os clientes que usam a fachada não têm que acessar os objetos do subsistema diretamente.
![Page 21: Padrões de Projeto Aula 10 – Padrão Façade. PADRÃO FAÇADE Padrões de Projeto - Façade Por que não tornar as coisas mais simples? Alteração de uma interface](https://reader035.vdocuments.com.br/reader035/viewer/2022062302/5706386e1a28abb8239060ca/html5/thumbnails/21.jpg)
Padr
ões d
e Pr
ojet
o - F
açad
e
public class Cpu{ public void start(){
System.out.println("inicialização inicial");} public void execute(){
System.out.println("executa algo no processador"); } public void load() {
System.out.println("carrega registrador"); } public void free() {
System.out.println("libera registradores"); }
}
• Considere as seguintes entidades/classes que compõem um computador: CPU, Memory, HardDrive.
public class Memory { public void load() {
System.out.println("carregando dados na memória"); } public void free() {
System.out.println("liberando dados da memória"); }
}
Exercício
![Page 22: Padrões de Projeto Aula 10 – Padrão Façade. PADRÃO FAÇADE Padrões de Projeto - Façade Por que não tornar as coisas mais simples? Alteração de uma interface](https://reader035.vdocuments.com.br/reader035/viewer/2022062302/5706386e1a28abb8239060ca/html5/thumbnails/22.jpg)
Padr
ões d
e Pr
ojet
o - F
açad
e
Exercíciopublic class HardDrive { public void read() { System.out.println("lendo dados do HD"); } public void write() { System.out.println("escrevendo dados no HD"); } }
• Crie uma fachada que facilite ligar o computador.• Para ligar o computador, você deve seguir a seguinte ordem:
1. Inicializar a CPU2. Ler do disco rígido3. Carregar uma informação da memória4. Executar a CPU5. Liberar memória
![Page 23: Padrões de Projeto Aula 10 – Padrão Façade. PADRÃO FAÇADE Padrões de Projeto - Façade Por que não tornar as coisas mais simples? Alteração de uma interface](https://reader035.vdocuments.com.br/reader035/viewer/2022062302/5706386e1a28abb8239060ca/html5/thumbnails/23.jpg)
Padr
ões d
e Pr
ojet
o - F
açad
e
Referências• [1] Capítulo 7 do livro “Padrões de Projeto – Use a Cabeça!”