Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — FGV 2025
- Código
- fg104555
- Banca
- FGV
- Órgão
- AL-AM
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista Legislativo - Analista de Sistema
- ADecorator.
- BBridge.
- CFacade.
- DProxy.
- EAdapter.
GabaritoE — Adapter.
Gabarito: letra E. O cenário descreve a necessidade de integrar um módulo legado (CriptoLegado) com interface criptografar(dados, chave) a um novo framework que espera a interface IServicoSeguranca com método protegerInformacao(dados, tipoAlgoritmo). O padrão estrutural Adapter é o indicado para fazer duas interfaces incompatíveis trabalharem juntas, sem modificar o código fonte de nenhuma delas. Ele atua como um "tradutor" entre as interfaces.
A banca testa o conhecimento dos principais padrões estruturais do catálogo GoF (Gang of Four). A chave da questão é identificar que o problema é de incompatibilidade de interfaces – o legado tem uma interface, o novo framework espera outra. O Adapter resolve exatamente isso.
Padrão Estrutural (GoF) | Finalidade Principal | Aplicação no Cenário | Resolve Incompatibilidade de Interfaces? |
|---|---|---|---|
Adapter (Gabarito) | Converter a interface de uma classe em outra interface esperada pelo cliente. | Traduz | Sim – é a essência do padrão. |
Decorator | Adicionar responsabilidades dinamicamente a um objeto, sem alterar sua interface. | Não se aplica; o problema não é estender comportamento, mas adaptar interfaces. | Não |
Bridge | Separar abstração da implementação, permitindo que ambas variem independentemente. | Não se aplica; não há hierarquia de abstração/implementação a ser desacoplada. | Não |
Facade | Fornecer uma interface simplificada para um subsistema complexo. | Poderia ocultar a complexidade do legado, mas não converte a interface específica do legado para a esperada pelo framework. | Não (cria nova interface, não converte a existente) |
Proxy | Fornecer um substituto para controlar o acesso a outro objeto. | Não se aplica; o problema não é controle de acesso, mas compatibilidade de interfaces. | Não |
O Decorator tem a finalidade de adicionar responsabilidades/comportamentos dinamicamente a um objeto, sem alterar sua interface. Não se aplica à adaptação de interfaces – ele estende funcionalidades, não resolve incompatibilidade.
O Bridge separa a abstração da implementação, permitindo que ambas variem independentemente. É útil quando se quer evitar vínculo permanente entre interface e implementação, mas não é o padrão para integrar interfaces pré-existentes incompatíveis.
O Facade fornece uma interface simplificada para um subsistema complexo. Embora possa ocultar a complexidade do legado, ele não resolve a incompatibilidade de interfaces – o Facade cria uma nova interface, mas não converte a interface existente do legado para a esperada pelo framework.
Confundir Facade com Adapter. Ambos lidam com interfaces, mas o Facade simplifica um conjunto de interfaces (visa reduzir complexidade), enquanto o Adapter converte uma interface específica em outra esperada pelo cliente (visa compatibilizar). A banca explora essa troca sutil.
O Proxy fornece um substituto ou representante de outro objeto para controlar o acesso a ele (ex.: lazy loading, controle de acesso, logging). Não tem relação com adaptação de interfaces – mantém a mesma interface do objeto real.
O Adapter (também conhecido como Wrapper) converte a interface de uma classe em outra interface que o cliente espera. No caso, o Adapter envolveria o módulo CriptoLegado, implementaria a interface IServicoSeguranca e, dentro do método protegerInformacao, chamaria o método criptografar do legado, fazendo a tradução necessária entre os parâmetros. Isso permite a integração sem alterar o código legado nem a interface do framework.
Em questões de padrões de projeto, identifique primeiro o problema que o padrão resolve. Se for incompatibilidade de interfaces → Adapter. Se for adicionar funcionalidade a um objeto sem subclasse → Decorator. Se for separar abstração da implementação → Bridge. Se for simplificar um subsistema → Facade. Se for controlar acesso a um objeto → Proxy.
Gabarito: letra E (Adapter).
Link permanente: /questoes/fg104555