Questão de Engenharia de Software — Padrões de Projeto (Engenharia de Software) — INSTITUTO AOCP 2024
- Código
- qa631576
- Banca
- INSTITUTO AOCP
- Órgão
- DPE MS
- Ano
- 2024
- Cargo
- Ana Def ( )
- ADecorator.
- BAdapter.
- CFlyweight.
- DMediator.
- EFacade.
GabaritoE — Facade.
Gabarito: letra E. O padrão Facade (Fachada) é o padrão estrutural que fornece uma interface unificada e simplificada para um conjunto de interfaces de um subsistema, ocultando sua complexidade. O enunciado descreve exatamente essa intenção: "fornece uma interface mais simplificada para um conjunto de classes complexas".
Os padrões de projeto (Design Patterns) são soluções gerais e reutilizáveis para problemas recorrentes no desenvolvimento de software. Eles são classificados em três famílias principais: criacionais (lidam com a criação de objetos), estruturais (lidam com a composição de classes e objetos) e comportamentais (lidam com a comunicação e distribuição de responsabilidades entre objetos). O padrão Facade pertence à família dos estruturais, pois organiza a estrutura de um sistema para simplificar seu uso.
O objetivo central do Facade é fornecer um ponto único de entrada para um subsistema complexo, reduzindo o acoplamento entre o cliente e as classes internas. Imagine um sistema de controle de acesso com módulos de autenticação, autorização, auditoria e notificação. Em vez de o cliente interagir diretamente com cada um desses módulos, o Facade oferece um método único, como acessarSistema(usuario, senha), que internamente orquestra todas as chamadas necessárias. Isso simplifica o uso, mas não esconde as funcionalidades internas — o cliente ainda pode acessá-las diretamente se precisar.
A distinção crucial que a banca explora é entre Facade e Adapter. Enquanto o Facade cria uma interface nova e simplificada para um subsistema, o Adapter converte a interface de uma classe existente em outra interface que o cliente espera, permitindo que classes incompatíveis trabalhem juntas. O Facade não altera a interface original; ele apenas a encapsula. Outro padrão que confunde é o Mediator, mas este é comportamental e centraliza a comunicação entre objetos, enquanto o Facade é estrutural e simplifica o acesso a um subsistema.
A pegadinha desta questão está em reconhecer a palavra-chave "interface mais simplificada" como a assinatura do Facade. O candidato que confunde os padrões pode cair em Adapter (que também mexe com interfaces) ou Mediator (que também envolve comunicação). Guarde a fronteira: Facade simplifica o acesso a um conjunto de classes; Adapter converte uma interface para outra; Mediator centraliza a comunicação entre objetos.
O Decorator é um padrão estrutural que agrega responsabilidades adicionais a um objeto dinamicamente, de forma transparente. Ele envolve o objeto original com uma camada que adiciona comportamento, sem alterar sua interface. O enunciado fala em simplificar o acesso a um conjunto de classes, não em adicionar funcionalidades a um objeto específico.
O Adapter converte a interface de uma classe em outra interface que o cliente espera, permitindo que classes com interfaces incompatíveis trabalhem juntas. Ele resolve um problema de compatibilidade entre interfaces, enquanto o Facade resolve um problema de complexidade, fornecendo uma interface simplificada. A palavra-chave "simplificada" no enunciado aponta para o Facade, não para o Adapter.
O Flyweight é um padrão estrutural que visa reduzir o uso de memória compartilhando objetos comuns entre múltiplos contextos. Ele é usado quando há muitos objetos semelhantes, armazenando o estado intrínseco (compartilhado) e extrínseco (contextual) separadamente. Não tem relação com simplificar a interface de um conjunto de classes.
O Mediator é um padrão comportamental que centraliza a comunicação entre objetos, evitando que eles se referenciem explicitamente uns aos outros. Ele reduz o acoplamento entre objetos, mas não fornece uma interface simplificada para um conjunto de classes. Além disso, pertence a outra família de padrões, o que já o elimina.
O Facade fornece uma interface unificada e simplificada para um conjunto de interfaces de um subsistema, ocultando sua complexidade. É exatamente o que o enunciado descreve: "fornece uma interface mais simplificada para um conjunto de classes complexas". Ele é um padrão estrutural que reduz o acoplamento entre o cliente e o subsistema, facilitando o uso e a manutenção.
Para identificar o Facade na prova, procure por palavras como "interface simplificada", "ponto único de acesso" ou "ocultar complexidade". Se a questão falar em "converter interface" ou "compatibilizar", é Adapter; se falar em "adicionar responsabilidades", é Decorator; se falar em "centralizar comunicação", é Mediator.
Gabarito: letra E
Link permanente: /questoes/qa631576