Alternativa D - Observer
Análise do Problema
O enunciado descreve um cenário clássico de desenvolvimento de software onde existe uma fonte de dados centralizada (as cotações da bolsa) que precisa atualizar múltiplos componentes visuais (texto e gráfico) sempre que os dados mudam.
Essa necessidade de manter a consistência entre a origem dos dados e suas representações é resolvida pelo padrão de projeto Observer.
Por que o padrão Observer?
O padrão Observer (Observador) define uma dependência do tipo um-para-muitos entre objetos. Quando um objeto muda de estado (o Assunto ou Subject), todos os seus observadores são notificados e atualizados automaticamente.
No contexto da questão:
- Assunto (Subject): O sistema de cotação da bolsa de valores (fonte de dados).
- Observadores (Observers): A interface textual (ticker) e a interface gráfica (gráfico de candlesticks).
- Comportamento: Assim que ocorre uma variação no valor da ação, a fonte notifica ambos os observadores, garantindo a sincronização solicitada.
Este é o mesmo princípio utilizado em frameworks como o Model-View-Controller (MVC), onde o Modelo (dados) notifica as Views (interfaces) sobre mudanças.
Por que as outras alternativas estão incorretas?
| Padrão | Função Principal | Por que não se aplica aqui |
|---|
| Strategy | Permite escolher algoritmos em tempo de execução. | Não trata de notificação de mudanças de dados. |
| State | Altera o comportamento de um objeto quando seu estado interno muda. | Foca no comportamento do próprio objeto, não na atualização de outros. |
| Iterator | Permite percorrer elementos de uma coleção sem expor sua estrutura. | Usado para navegação em listas, não para sincronização de estados. |
| Mediator | Centraliza a comunicação complexa entre vários objetos. | Embora envolva interação, não foca especificamente no mecanismo de notificação automática de mudanças. |
Conclusão
A alternativa correta é a D, pois o padrão Observer é o projeto específico projetado para resolver problemas de sincronização entre uma fonte de dados e múltiplas visualizações que dependem dela.