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

  1. Identificar uma interface mais simples e unificada para o subsistema ou componente.
  2. Desenhar uma classe ‘wrapper’ que encapsula o subsistema.
  3. A fachada/wrapper captura a complexidade e as colaborações do componente, e delega nos métodos apropriados.
  4. O cliente usa (está acoplado a) apenas a fachada.
  5. 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…

Deixe uma resposta

O seu endereço de email não será publicado.