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