Intent
- Prover uma interface unificada para um conjunto de interfaces em um subsistema.Facade define uma interface de nível superior que torna o subsistema mais fácil de usar.
- Bobinar um subsistema complicado com uma interface mais simples.
Problema
Um segmento da comunidade de clientes precisa de uma interface simplificada para a funcionalidade global de um subsistema complexo.
Discussão
Fachada discute o encapsulamento de um subsistema complexo dentro de um objeto de interface única. Isto reduz a curva de aprendizagem necessária para alavancar o subsistema com sucesso. Ele também promove a desacoplamento do subsistema de seus potenciais muitos clientes. Por outro lado, se aFacade é o único ponto de acesso para o subsistema, ela limitará os recursos e a flexibilidade que os “usuários de poder” podem precisar.
O objeto Facade deve ser um defensor ou facilitador bastante simples. Ele não deve tornar-se um oráculo omnisciente ou objeto “deus”.
Estrutura
Facade pega um “enigma envolto num enigma envolto em mistério”, e interjeta um invólucro que domina a massa amorfa e inescrutável do software.
SubsystemOne
e SubsystemThree
não interage com os componentes internos de SubsystemTwo
. Eles usam a SubsystemTwoWrapper
“fachada” (ou seja, a abstração de nível superior).
Exemplo
A fachada define uma interface unificada de nível superior para um subsistema que facilita a sua utilização. Os consumidores encontram uma Fachada quando fazem um pedido a partir de um catálogo. O consumidor liga para um número e fala com um representante de atendimento ao cliente. O representante de atendimento ao cliente atua como uma Fachada, fornecendo uma interface para o departamento de atendimento de pedidos, o departamento de faturamento e o departamento de expedição.
Lista de verificação
- Identificar uma interface mais simples e unificada para o subsistema ou componente.
- Desenhar uma classe ‘wrapper’ que encapsula o subsistema.
- A fachada/wrapper captura a complexidade e as colaborações do componente, e delega nos métodos apropriados.
- O cliente usa (está acoplado a) apenas a fachada.
- Consulte se Fachadas adicionais adicionariam valor.
Regras de polegar
- Fachada define uma nova interface, enquanto que o Adapter usa uma interface antiga. Lembre-se que o Adapter faz com que duas interfaces existentes trabalhem em conjunto para definir uma totalmente nova.
- Whereas Flyweight mostra como fazer muitos pequenos objetos, Facadeshows mostra como fazer um único objeto representar um subsistema inteiro.
- Mediator é similar a Facade na medida em que abstrai a funcionalidade das classes existentes. O Mediator abstracts/centraliza arbitrarycommunications entre objetos colegas. Ele rotineiramente “agrega valor”, e é conhecido/referenciado pelos objetos colegas. Em contraste,Facade define uma interface mais simples para um subsistema, não adiciona nova funcionalidade, e não é conhecido pelas classes do subsistema.
- Abstract Factory pode ser usado como uma alternativa a Facade para esconder classes específicas da plataforma.
- Facade objects are often Singletons because only one Facade object isrequired.
- Adapter and Facade are both wrappers; but they are different kindsof wrappers. A intenção de Facade é produzir uma interface mais simples, e a intenção de Adapter é projetar para uma interface existente. Enquanto Facade rotineiramente envolve vários objetos e Adapter wraps como objeto único; Facade poderia fazer o frontend de um único objeto complexo e Adapter poderia envolver vários objetos legados.
Question: Então a maneira de dizer a diferença entre o padrãoAdapter e o padrão Facade é que a classe Adapter wrapsone e a Facade pode representar muitas classes?
Answer: Não! Lembre-se, o padrão Adapter muda a interface de uma ou mais classes em uma interface que um cliente espera. Enquanto a maioria dos exemplos de livros de texto mostram o adaptadoradaptando uma classe, você pode precisar adaptar muitas classes para prover a interface para a qual um cliente está codificado. Da mesma forma, uma fachada pode fornecer uma interface simplificada para uma única classe com uma interface verycomplex. A diferença entre as duas não é o intervalo de quantas classes eles “embrulham”, é na intenção deles.
Suporte nosso site gratuito e seja dono do livro electrónico!
- 22 padrões de design e 8 princípios explicados em profundidade
- 406 páginas bem estruturadas, fáceis de ler, sem jargões
- 228 ilustrações e diagramas claros e úteis
- Um arquivo com exemplos de código em 4 idiomas
- Todos os dispositivos suportados: Formatos EPUB/MOBI/PDF
Saiba mais…