Anúncio
Anúncio

Mais conteúdo relacionado

Destaque(20)

Anúncio

Similar a Padrões-12 - Padrões Estruturais - Facade(20)

Anúncio

Último(20)

Padrões-12 - Padrões Estruturais - Facade

  1. Padrões de Projeto Padrões Estruturais Facade/Façade/Fachada
  2. Facade/Façade/Fachada •  Provê uma interface unificada para um conjunto de interfaces em um subsitema. •  Facade ou Façade ou Fachada define uma interface de mais alto nível, que torna o subsistema mais fácil de se usar 2 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  3. Motivação •  Estruturar um sistema em subsistemas ajuda a reduzir a complexidade – Um objetivo de projeto comum é minimizar a comunicação e as dependências entre subsistemas. •  Uma forma de se alcançar isto é introduzindo um objeto FACADE, que provê uma interface única e simplificada às facilidades mais gerais de um subsistema 3 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  4. Motivação 4 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  5. Façade •  Suponha um sub- sistema (conjunto de pacotes e classes) que trabalham em conjunto para prover funcionalidade a clientes (ex: GUI ou Iterators) •  Para obter esta funcionalidade desejada, cada cliente terá que interagir com um conjunto de classe deste subsistema 5 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  6. Façade •  Problemas: – Se houver manutenções nas classes do sub- sistema, os clientes serão afetados. – Acoplamento Forte – Dificuldade de manutenção e extensão 6 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  7. Façade •  Solução – Implementar um classe Façade – Façade atua na intermediação (orquestração, coordenação) da funcionalidade desejada pelo cliente – Classe Façade é uma interface de alto nível (provedor de serviços), ou seja, abstrai o detalhes do sub-sistema para os clientes. 7 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  8. Façade •  Vantagens: –  Mudanças na classes podem afetar façade mas não o cliente –  Diminuição do acoplamento do cliente com a classes do subsistema –  Cliente usa o serviço do façade e não acopla-se diretamente com a implementação do serviço (classes do sub-sistema) 8 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  9. Motivação – Compiler Facade 9 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  10. Aplicação •  Use Façade quando: –  Deseja-se prover uma interface simples para um sistema complexo (útil para a maioria dos clientes...) –  Há muitas dependências entre clientes e as classes de implementação de uma abstração. Introduz-se um façade para desacoplá-los (independência e portabilidade) –  Deseja-se “estruturar em camadas” seus subsistemas (façade define um ponto de entrada para cada nível) 10 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  11. Estrutura 11 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  12. Participantes •  Façade (Compiler) –  Conhece quais classes de um subsistema são responsáveis por uma requisição –  Delega as requisições de clientes para os objetos apropriados do subsistema •  Classes do Subsistema (Scanner, Parser, ProgramNode etc) –  Implementam a funcionalidade do subsistema –  Realizam o trabalho atribuído pelo objeto Façade –  Desconhecem o Façade, isto é, não possuem referências a ele 12 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  13. Colaborações •  Clientes se comunicam com o subsistema enviando requisições ao Façade, que as direcionam aos objetos apropriados do subsistema •  Embora os objetos do subsistema realizem o trabalho real, pode ser que o Façade tenha que fazer a “tradução” da sua interface para as do subsistema •  Clientes que usam o Façade não têm que acessar os objetos do subsistema diretamente 13 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  14. Conseqüências •  Benefícios: 1.  Separa clientes dos componentes do subsistema, reduzindo o número de objetos que os clientes lidam e tornando o subsistema mais fácil de se usar 2.  Promove acoplamento fraco entre o subsistema e seus clientes. •  Acoplamento fraco permite que se mude os componentes de um subsistema sem afetar seus clientes. •  Além de ajudar a reduzir as dependências 3.  Não impede que aplicações usem diretamente as classes do subsistema, caso necessário 14 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  15. Exemplo •  Suponha uma aplicação com os seguintes requisitos – Recebe dados de um cliente (conta, endereço e cartão de crédito) por meio de um FORM – Valida as entradas – Grava os dados nos arquivos apropriados •  Para validar dos dados, há classes Conta, Endereço e Cartão de Crédito 15 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  16. FORM Cliente 16 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  17. Exemplo Seqüência 1.  Instancia os três objetos com os dados digitados no FORM 2.  Valida estes dados, usando métodos destes objetos - isValid() 3.  Grava os dados nos arquivos, usando métodos destes objetos – save() 17 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  18. Exemplo Sem Façade 1.  Objeto FORM deverá instanciar cada um dos objetos (Conta, Endereço e Cartão de Crédito) e coordenar a seqüência de chamadas aos métodos isValid() e save() destes três objetos 2.  Mudanças (ex. alterar a assinatura do método save() ou inclusão de mais dados no FORM que implicam em novo objeto para validação) implicará em alteração do objeto FORM 18 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  19. Exemplo Com Façade 1.  Objeto FORM instancia o Façade e passa como parâmetro os dados da tela ao Façade por meio dos setters nele implementados 2.  Façade declara método saveCustomerData(), que instância os objetos de validação (Conta, Endereço e Cartão de Crédito) e coordena as chamadas ao isValid() Save() dos objetos, retornando true ou false. 3.  Neste caso, mudanças de requisitos implicarão maiores modificações no Façade (pode requerer novos setters) e não no FORM 19 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  20. 20 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  21. 21 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  22. 22 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  23. Implementação •  Considere as seguintes questões ao implementar: – Reduzir o acoplamento entre clientes e subsistema •  Eventualmente, fazendo o Façade uma classe abstrata com subclasses concretas para diferentes implementações de um subsistema – Classes de subsistema públicas versus privadas •  Façade é parte da interface pública do subsistema 23 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  24. Exemplo •  Um facade em um subsistema compilador: 24 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  25. Exemplo 25 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  26. Exemplo 26 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  27. Exemplo 27 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  28. Exemplo 28 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  29. Exemplo 29 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  30. Exemplo 30 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
  31. Mais sobre Façade •  Por ser portar como uma interface de um sub-sistema, Façade pode oferecer vários serviços aos objetos clientes e não apenas um serviço, como mostram os dois exemplos. 31 Livro Texto: Design Pattern - Elements Eduardo N. F. Zagari of Reusable OO Software - Gamma Ivan Granja
Anúncio