Pular para o conteúdo principal

Questão de Arquitetura de Software — Padrões de projeto (Design Patterns) — FGV 2023

Arquitetura de SoftwarePadrões de projeto (Design Patterns)
Código
fg063744
Banca
FGV
Órgão
DPE-RS
Ano
2023
Nível
Médio
Cargo
Técnico - Apoio Especializado - Programador
Os padrões de projeto fornecem soluções para problemas recorrentes no desenvolvimento de sistemas. Maria está desenvolvendo o sistema ComprasWeb e precisa resolver um problema comum de sistemas Web que é a recepção assíncrona de dados, onde deve ocorrer a atualização dos dados na interface do usuário quando ocorre a resposta do servidor, sem que haja o bloqueio das demais funções da interface.Para tratar o problema do ComprasWeb, Maria deve usar o padrão de projeto:
  1. AObserver;
  2. BChain of Responsibility;
  3. CFlyweight;
  4. DData Access Object;
  5. EBuilder.
Revelar gabarito e comentário

GabaritoA — Observer;

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Padrões de Projeto - Observer

Gabarito: letra A. O padrão Observer (ou Publish-Subscribe) é o mais indicado para cenários onde um objeto (sujeito) notifica automaticamente uma lista de dependentes (observadores) sobre mudanças em seu estado, sem bloqueio das demais funções. É exatamente o caso da recepção assíncrona de dados que atualiza a interface do usuário.

A questão descreve a necessidade de atualizar a interface quando o servidor responde, sem bloquear outras funcionalidades. O Observer, como padrão comportamental, permite que múltiplos objetos sejam notificados de forma eficiente.

Padrão de Projeto

Categoria

Propósito

Relação com o Problema (Recepção Assíncrona / Atualização de Interface)

Observer

Comportamental

Definir dependência um-para-muitos; notificar automaticamente todos os dependentes sobre mudanças de estado.

Correto. Permite que a interface (observador) seja atualizada automaticamente quando o servidor (sujeito) responde, sem bloquear outras funções.

Chain of Responsibility

Comportamental

Passar uma requisição ao longo de uma cadeia de handlers até que um a processe.

❌ Incorreto. Não notifica múltiplos objetos; apenas encaminha uma requisição.

Flyweight

Estrutural

Compartilhar objetos comuns para reduzir o uso de memória.

❌ Incorreto. Não está relacionado à notificação de mudanças de estado.

Data Access Object (DAO)

Persistência / Acesso a Dados

Abstrair e encapsular o acesso a fontes de dados (banco, arquivos).

❌ Incorreto. Não resolve o problema de notificação em tempo real.

Builder

Criacional

Separar a construção de um objeto complexo de sua representação.

❌ Incorreto. Não tem relação com atualização assíncrona.

Alternativa A — ✅ Correta ⟵ GABARITO

Observer é um padrão comportamental que define uma dependência um-para-muitos entre objetos, de modo que quando um objeto muda de estado, todos os seus dependentes são notificados e atualizados automaticamente. Adequa-se perfeitamente à comunicação assíncrona entre servidor e interface.

Alternativa B — ❌ Incorreta

Chain of Responsibility é um padrão comportamental que permite passar uma requisição ao longo de uma cadeia de handlers até que um deles a processe. Não serve para notificar múltiplos observadores de forma automática.

Alternativa C — ❌ Incorreta

Flyweight é um padrão estrutural que visa reduzir o uso de memória compartilhando objetos comuns. Não está relacionado à notificação de mudanças de estado.

Alternativa D — ❌ Incorreta

Data Access Object (DAO) é um padrão para abstrair e encapsular o acesso a fontes de dados (banco de dados, arquivos). Não resolve o problema de notificação em tempo real.

Alternativa E — ❌ Incorreta

Builder é um padrão criacional que separa a construção de um objeto complexo de sua representação, permitindo diferentes representações. Não tem relação com atualização assíncrona.

Gabarito: letra A

Link permanente: /questoes/fg063744