O Padrão de Fachada (ou padrão de fachada) é um padrão de design de software comumente usado com programação orientada a objetos. O nome é por analogia a uma fachada arquitetônica.

Uma fachada é um objeto que fornece uma interface simplificada para um corpo maior de código, como uma biblioteca de classes. Uma fachada pode:

  • tornar uma biblioteca de software mais fácil de usar, entender e testar, já que a fachada tem métodos convenientes para tarefas comuns;
  • tornar a biblioteca mais legível, pelo mesmo motivo;
  • reduzir dependências de código externo no funcionamento interno de uma biblioteca, já que a maioria dos códigos usa a fachada, permitindo assim maior flexibilidade no desenvolvimento do sistema;
  • enrolar uma coleção mal projetada de APIs com uma única API bem desenhada.

O padrão de design da fachada é frequentemente usado quando um sistema é muito complexo ou difícil de entender porque o sistema tem um grande número de classes interdependentes ou o seu código fonte não está disponível. Este padrão esconde as complexidades do sistema maior e fornece uma interface mais simples para o cliente. Normalmente envolve uma única classe de invólucro que contém um conjunto de membros exigidos pelo cliente. Estes membros acessam o sistema em nome do cliente de fachada e escondem os detalhes de implementação.

Usage

Uma fachada é usada quando uma interface mais fácil ou mais simples para um objeto subjacente é desejada. Alternativamente, um adaptador pode ser usado quando o invólucro deve respeitar uma determinada interface e deve suportar um comportamento polimórfico. Um decorador torna possível adicionar ou alterar o comportamento de uma interface em tempo de execução.

Padrão Intent
Adaptador Converte uma interface para outra de modo a corresponder ao que o cliente espera
Decorador Dinamicamente adiciona responsabilidade à interface, envolvendo o código original
Fachada Provê uma interface simplificada

O padrão de fachada é tipicamente usado quando:

  • é necessária uma interface simples para acessar um sistema complexo;
  • as abstrações e implementações de um subsistema estão firmemente acopladas;
  • é necessário um ponto de entrada para cada nível de software em camadas; ou
  • um sistema é muito complexo ou difícil de entender.

Estrutura

Fachada: A classe de fachada resume os pacotes 1, 2, e 3 do resto da aplicação. Clientes: Os objetos estão usando o Padrão de Fachada para acessar recursos dos Pacotes.

Exemplo

Este é um exemplo abstrato de como um cliente (“você”) interage com uma fachada (o “computador”) para um sistema complexo (partes internas do computador, como CPU e HardDrive).

/* Complex parts */class CPU { freeze() { /* code here */ } jump(position) { /* code here */ } execute() { /* code here */ }}class Memory { load(position, data) { /* code here */ }}class HardDrive { read(lba, size) { /* code here */ }}/* Facade */class ComputerFacade { constructor() { this.processor = new CPU(); this.ram = new Memory(); this.hd = new HardDrive(); } start() { this.processor.freeze(); this.ram.load(this.BOOT_ADDRESS, this.hd.read(this.BOOT_SECTOR, this.SECTOR_SIZE)); this.processor.jump(this.BOOT_ADDRESS); this.processor.execute(); }}/* Client */let computer = new ComputerFacade();computer.start();

Deixe uma resposta

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