Your SlideShare is downloading. ×
0
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

4,622

Published on

Padrões de Projeto. Padrão Estrutural. Fachada/Façade.

Padrões de Projeto. Padrão Estrutural. Fachada/Façade.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
4,622
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
197
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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

×