Padrões de Projeto: Singleton e Observer
Gabarito: letra D. O Padrão (1) descreve a criação de uma classe com apenas uma instância, que é exatamente a definição do padrão Singleton (GoF, padrão criacional). O Padrão (2) descreve um objeto principal que notifica e atualiza todos os dependentes em tempo real, que é a definição do padrão Observer (GoF, padrão comportamental). A alternativa D é a única que combina corretamente Singleton e Observer, nessa ordem.
A banca testa o conhecimento dos padrões GoF mais clássicos e sua aplicação em cenários descritos. Vejamos cada alternativa.
Padrão | Descrição | Categoria GoF | Exemplo de Uso |
|---|
Singleton | Garante que uma classe tenha apenas uma instância e fornece um ponto global de acesso a ela | Criacional | Controle de acesso a um sensor único operado por equipes remotas |
Observer | Define uma dependência um-para-muitos entre objetos, de modo que quando um objeto muda de estado, todos seus dependentes são notificados e atualizados automaticamente | Comportamental | Objeto principal que notifica e atualiza todos os usuários dependentes em tempo real |
Alternativa A — ❌ Incorreta
Singleton está correto para (1), mas Heritage (ou Herança) não é um padrão de projeto GoF. Herança é um mecanismo da orientação a objetos, não um padrão de projeto. Além disso, o padrão (2) não corresponde a Heritage.
Alternativa B — ❌ Incorreta
Strategy é um padrão comportamental que permite trocar algoritmos em tempo de execução, não se aplica a controle de acesso a sensor com instância única. Composite é um padrão estrutural que compõe objetos em estruturas de árvore para representar hierarquias parte-todo, também não se encaixa em nenhum dos dois cenários.
Alternativa C — ❌ Incorreta
Strategy novamente errado para (1). Observer está correto para (2), mas a ordem está trocada? Na verdade a questão pede (1) e (2) respectivamente. Essa alternativa coloca Strategy para (1) e Observer para (2), mas (1) é Singleton, não Strategy. Portanto incorreta.
Alternativa D — ✅ Correta ⟵ GABARITO
Singleton garante que uma classe tenha apenas uma instância e fornece um ponto global de acesso a ela, perfeitamente adequado para controlar acesso a um sensor único. Observer define uma dependência um-para-muitos entre objetos, de modo que quando um objeto muda de estado, todos seus dependentes são notificados e atualizados automaticamente. Exatamente o que o Padrão (2) descreve.
Alternativa E — ❌ Incorreta
Builder é um padrão criacional que separa a construção de um objeto complexo de sua representação, permitindo o mesmo processo de construção criar diferentes representações. Factory (Factory Method ou Abstract Factory) são padrões criacionais para criação de objetos sem especificar a classe concreta. Nenhum deles se aplica aos cenários descritos.
Conclusão: A única combinação correta dos padrões (1) Singleton e (2) Observer é a letra D.