A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Padrões de Projeto Aula 10 – Padrão Façade.

Apresentações semelhantes


Apresentação em tema: "Padrões de Projeto Aula 10 – Padrão Façade."— Transcrição da apresentação:

1 Padrões de Projeto Aula 10 – Padrão Façade

2 Padrão Façade Por que não tornar as coisas mais simples?
Padrões de Projeto - Façade Alteração de uma interface com a intenção de simplificá-la. Oculta a complexidade de um conjunto de Classes.

3 Imagine um Home Theater
Padrões de Projeto - Façade

4 Imagine um Home Theater
Padrões de Projeto - Façade Muitas classes Muitas interações Você precisa saber o funcionamento de tudo para saber usar corretamente Quais métodos chamar para assistir um filme?

5 Para assistir um filme Ligar a máquina de pipoca
Colocar a máquina de pipoca em funcionamento Reduzir as luzes Baixar a tela Ligar o projetor Configurar a entrada do projeto para DVD Colocar o projetor em modo wide-screen Ligar o amplificador de áudio Configurar a entrada do amplificador para DVD Configurar o amplificador para surround Ajustar o amplificador para o volume médio (5) Ligar o DVD Player Acionar o play no DVD Player Padrões de Projeto - Façade

6 Para assistir um filme (em Java)
Ligar a máquina de pipoca Colocar a máquina de pipoca em funcionamento Reduzir as luzes Baixar a tela Ligar o projetor Configurar a entrada do projeto para DVD Colocar o projetor em modo wide-screen Ligar o amplificador de áudio Configurar a entrada do amplificador para DVD Configurar o amplificador para surround Ajustar o amplificador para o volume médio (5) Ligar o DVD Player Acionar o play no DVD Player pipoqueira.ligar(); pipoqueira.cozinhar(); luz.dim(10); tela.descer(); projetor.ligar(); projetor.setInput(dvdPlayer); projetor.modoWideSreen(); amplificador.ligar(); amplificador.setDVD(dvdPlayer); amplificador.setSurroundAudio(); amplificador.setVolume(5); dvdPlayer.ligar(); dvdPlayer.play(filme); Padrões de Projeto - Façade

7 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 Padrões de Projeto - Façade

8 Solução para a complexidade
A FACHADA + Padrões de Projeto - Façade

9 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 Padrões de Projeto - Façade

10 Solução: a Fachada Padrões de Projeto - Façade

11 A Fachada Preserva o acesso direto ao subsistema, mas...
Você ainda pode usar os métodos de cada aparelho Padrões de Projeto - Façade

12 Implementando a Fachada
Padrões de Projeto - Façade

13 Implementando a Fachada
Padrões de Projeto - Façade

14 Como a vovó assistiria o filme
Padrões de Projeto - Façade

15 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. Padrões de Projeto - Façade

16 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 Padrões de Projeto - Façade

17 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. Padrões de Projeto - Façade Hoje começaremos pela definição.

18 Terminologia e Estrutura
Padrões de Projeto - Façade

19 Participantes Fachada Classes de Subsistema
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 Padrões de Projeto - Façade

20 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. Padrões de Projeto - Façade

21 Exercício Considere as seguintes entidades/classes que compõem um computador: CPU, Memory, HardDrive. 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"); Padrões de Projeto - Façade 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");

22 Exercício Crie uma fachada que facilite ligar o computador.
public 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: Inicializar a CPU Ler do disco rígido Carregar uma informação da memória Executar a CPU Liberar memória Padrões de Projeto - Façade

23 Referências [1] Capítulo 7 do livro “Padrões de Projeto – Use a Cabeça!” Padrões de Projeto - Façade


Carregar ppt "Padrões de Projeto Aula 10 – Padrão Façade."

Apresentações semelhantes


Anúncios Google