Sapien IA
Computação Múltipla Escolha

Um colega seu de trabalho está implementando uma interface com o usuário de um sistema que dispara a execução de uma lógica de negócio envolvendo vários objetos. Ele implementa uma primeira versão que faz diversas chamadas a objetos da lógica de negócio porque não existe uma interface de mais alto nível disponível que encapsule esta complexidade. Para piorar, ao implementar um segundo módulo de interface com o usuário, ele se depara com o mesmo problema, tendo que copiar e colar partes da lógica utilizadas no primeiro módulo de interface com o usuário. Ao revisar o código feito pelo seu colega, qual padrão você recomendaria que ele utilizasse para diminuir o acoplamento entre os módulos de interface com o usuário e módulos referentes à lógica de negócio?

Um colega seu de trabalho está implementando uma interface com o usuário de um sistema que dispara a execução de uma lógica de negócio envolvendo vários objetos. Ele implementa uma primeira versão que faz diversas chamadas a objetos da lógica de negócio porque não existe uma interface de mais alto nível disponível que encapsule esta complexidade. Para piorar, ao implementar um segundo módulo de interface com o usuário, ele se depara com o mesmo problema, tendo que copiar e colar partes da lógica utilizadas no primeiro módulo de interface com o usuário. Ao revisar o código feito pelo seu colega, qual padrão você recomendaria que ele utilizasse para diminuir o acoplamento entre os módulos de interface com o usuário e módulos referentes à lógica de negócio?

  1. Proxy
  2. Composite
  3. Flyweight
  4. Adapter
  5. Facade

Resolução completa

Explicação passo a passo

E
Alternativa E

Alternativa E - Facade

Introdução à Análise

A questão descreve um cenário clássico de complexidade excessiva em um subsistema, onde a interface do usuário precisa interagir diretamente com muitos objetos de lógica de negócio. O problema central é a falta de uma camada intermediária que simplifique essas interações, levando à repetição de código (violação do princípio DRY - Don't Repeat Yourself) e alto acoplamento.

O padrão de projeto ideal para resolver esse problema é o Facade, pois sua principal função é fornecer uma interface unificada e simplificada para um conjunto de interfaces em um subsistema.

Desenvolvimento

O Problema Identificado

No enunciado, observa-se que:

  • Existem vários objetos na lógica de negócio.
  • A interface do usuário faz diversas chamadas diretas a esses objetos.
  • Não existe uma interface de nível superior disponível.
  • Há repetição de código entre diferentes módulos de interface.

Isso indica que o cliente (interface do usuário) está muito acoplado aos detalhes internos do subsistema (lógica de negócio), tornando o sistema difícil de manter e evoluir.

A Solução: Padrão Facade

O padrão Facade atua como uma "fachada" para o subsistema.

  • Encapsulamento: Ele esconde a complexidade dos objetos internos.
  • Simplificação: Oferece um método único ou poucos métodos que realizam toda a sequência de chamadas necessárias.
  • Desacoplamento: O código cliente passa a depender apenas da Facade, e não dos objetos individuais da lógica de negócio.

Se o colega utilizasse a Facade, ele criaria uma classe simples que coordenaria as chamadas aos objetos de negócio. Assim, tanto o primeiro quanto o segundo módulo de interface poderiam chamar essa mesma Facade, eliminando a necessidade de copiar e colar a lógica de disparo.

Análise das Alternativas

AlternativaDescriçãoPor que não é a correta?
A) ProxyControla o acesso a um objeto específico (ex: carregamento tardio, validação).Focado em controle de acesso a um único objeto, não em simplificar um grupo de objetos.
B) CompositePermite compor objetos em estruturas de árvore (parte-todo).Usado para representar hierarquias, não para simplificar interfaces de subsistemas.
C) FlyweightCompartilha estados para economizar memória.Focado em performance e uso de memória, não em organização de interfaces.
D) AdapterFaz interfaces incompatíveis funcionarem juntas.Útil quando as assinaturas dos métodos não batem, não quando o número de chamadas é grande.
E) FacadeFornece uma interface simplificada para um subsistema complexo.Correta. Resolve exatamente o problema de complexidade e acoplamento descrito.

Conclusão

O padrão Facade é a solução arquitetural recomendada para reduzir o acoplamento entre módulos de interface e lógica de negócio complexa, fornecendo uma camada de abstração que simplifica o uso do sistema.

Portanto, a resposta correta é a Alternativa E.

Tem outra questão para resolver?

Resolver agora com IA

Mais questões de Computação

Ver mais Computação resolvidas

Tem outra questão de Computação?

Cole o enunciado, tire uma foto ou descreva o problema — a IA resolve com explicação completa em segundos.