Padrão de Projeto Facade
Gabarito: letra C. O padrão Facade (Fachada) é um padrão estrutural do GoF que fornece uma interface unificada e simplificada para um conjunto de interfaces em um subsistema, tornando o subsistema mais fácil de usar. A alternativa C descreve exatamente essa definição.
A banca cobra o conceito clássico do Facade, conforme descrito no livro Design Patterns (GoF). É um padrão muito comum para simplificar sistemas complexos.
Alternativa | Descrição | Correta? | Justificativa |
|---|
A | Usado especificamente na programação estruturada | ❌ | Facade é um padrão orientado a objetos do GoF, não específico de programação estruturada |
B | Não pode ser usado quando há interesse em dividir subsistemas em camadas | ❌ | Facade é frequentemente usado exatamente para fornecer fachada por camada |
C | Define uma interface comum para um conjunto de interfaces em um subsistema | ✅ | Corresponde à definição do GoF: interface unificada que simplifica o uso do subsistema |
D | Promove forte acoplamento entre subsistemas e clientes | ❌ | Facade promove baixo acoplamento, pois clientes interagem apenas com a fachada |
E | Evita que aplicações acessem subclasses diretamente | ❌ | Facade evita acesso direto a subsistemas (conjuntos de classes), não especificamente a subclasses |
Alternativa A — ❌ Incorreta
Afirma que o Facade é usado especificamente na programação estruturada. Na verdade, o Facade é um padrão orientado a objetos, parte do catálogo GoF, e pode ser aplicado em qualquer paradigma que suporte encapsulamento e interfaces, mas não é "específico" da programação estruturada. O erro é associá-lo a um paradigma no qual ele não se enquadra como padrão de projeto.
Alternativa B — ❌ Incorreta
Diz que "não pode ser usado quando há interesse em dividir seus subsistemas em camadas". Na prática, o Facade é frequentemente utilizado exatamente para fornecer uma fachada para cada camada, simplificando a comunicação entre elas. É um padrão útil em sistemas em camadas.
Alternativa C — ✅ Correta ⟵ GABARITO
Define corretamente o padrão: "Ele define uma interface comum para um conjunto de interfaces em um subsistema." Isso corresponde à definição do GoF: "Fornece uma interface unificada para um conjunto de interfaces em um subsistema. O Facade define uma interface de nível mais alto que torna o subsistema mais fácil de usar." Portanto, é a alternativa correta.
Alternativa D — ❌ Incorreta
Afirma que o padrão promove "forte acoplamento". Na verdade, o Facade promove baixo acoplamento, pois os clientes interagem apenas com a fachada, não com os subsistemas diretamente. Isso reduz as dependências e torna o sistema mais flexível.
Alternativa E — ❌ Incorreta
Diz que "evita que as aplicações acessem as subclasses diretamente". O Facade não lida com subclasses, mas com subsistemas (conjuntos de classes). Ele evita que os clientes acessem as classes do subsistema diretamente, mas não especificamente subclasses. O termo correto seria "subsistemas", não "subclasses".
Gabarito: letra C.