André está trabalhando em um sistema com atualização de dados de forma assíncrona, onde um gráfico e uma planilha precisam repercutir de forma automática qualquer alteração efetuada na fonte de dados. Para implementar a solução, André deve usar o padrão de desenvolvimento:
- A)Chain of Responsibility;
Chain of Responsibility trata do encaminhamento de uma requisição por uma cadeia de objetos, não de notificação automática de mudanças.
- B)Adapter;
Adapter serve para compatibilizar interfaces diferentes, e não para propagar alterações para vários componentes.
- C)Factory Method;
Factory Method cria objetos sem expor a lógica de instanciação, então não resolve o problema de atualização assíncrona de dependentes.
- D)Observer;
Observer é o padrão correto, pois permite que vários elementos sejam notificados automaticamente quando a fonte de dados muda.
- E)Front Controller.
Front Controller centraliza o tratamento de requisições em aplicações web, mas não é voltado a sincronizar gráfico e planilha com mudanças na fonte.
Gabarito: D
O ponto central da questão é perceber como funciona a atualização automática quando um objeto muda e vários outros precisam ser avisados. Isso é bem típico do padrão Observer: existe um sujeito, ou "subject", que mantém interessados cadastrados e, quando a fonte de dados sofre alteração, ele dispara notificações para todos os observadores. Assim, gráfico e planilha se atualizam sem que a fonte precise conhecer os detalhes de cada um. Esse desacoplamento é exatamente o charme do padrão: quem publica a mudança não precisa saber quem vai reagir a ela. Na prática, o Observer é usado quando há dependência de um para muitos. Mudou a fonte, todos os dependentes são informados e podem se sincronizar. É uma solução elegante para eventos assíncronos e propagação automática de mudanças, como telas, relatórios, dashboards e componentes de interface. Em livros clássicos de padrões de projeto, como o GoF, essa é a descrição mais direta do Observer. Por isso o gabarito é a letra D. O gráfico e a planilha são os observadores, e a fonte de dados é o objeto observado. Sempre que houver essa ideia de "avisar automaticamente os interessados quando algo muda", você deve pensar em Observer quase como reflexo imediato de sistema.