Padroes de Projeto - Facade
Padrões Estruturais
Facade/Façade/Fachada
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 of Reusable OO Software - Gamma
Eduardo N. F. Zagari
Ivan Granja
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 of Reusable OO Software - Gamma
Eduardo N. F. Zagari
Ivan Granja
Motivação
4
Livro Texto: Design Pattern - Elements of Reusable OO Software - Gamma
Eduardo N. F. Zagari
Ivan Granja
Façade
• Suponha um subsistema (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 of Reusable OO Software - Gamma
Eduardo N. F. Zagari
Ivan Granja
Façade
• Problemas:
– Se houver manutenções nas classes do subsistema, os clientes serão afetados.
– Acoplamento Forte
– Dificuldade de manutenção e extensão 6
Livro Texto: Design Pattern - Elements of Reusable OO Software - Gamma
Eduardo N. F. Zagari
Ivan Granja
Façade
• Solução
7
– 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.
Livro