O padrão de projeto de software orientado a objetos, que pode ser utilizado para garantir que uma determinada classe tenha somente uma única instância, é
- A)adapter.
Adapter é o padrão que faz a adaptação entre interfaces incompatíveis, e não controla a quantidade de instâncias de uma classe.
- B)flyweight.
Flyweight busca reduzir uso de memória compartilhando objetos semelhantes, mas não tem como objetivo garantir uma única instância.
- C)memento.
Memento serve para capturar e restaurar o estado de um objeto, como uma 'fotografia' do momento, não para limitar instâncias.
- D)singleton.
Singleton é o padrão que garante que uma classe tenha apenas uma única instância e fornece um ponto de acesso a ela.
- E)visitor.
Visitor separa algoritmos da estrutura de objetos, permitindo adicionar operações sem alterar as classes visitadas, e não trata de unicidade de instância.
Gabarito: D
Quando a questão fala em um padrão que garante que uma classe tenha apenas uma única instância, ela está descrevendo o Singleton. A ideia é simples: em vez de deixar o sistema criar vários objetos daquele tipo, você controla a criação e entrega sempre a mesma instância, normalmente por meio de um método de acesso global. Esse padrão aparece muito quando faz sentido existir apenas um objeto central, como uma classe de configuração, um gerenciador de logs ou um recurso compartilhado que não pode ser duplicado sem gerar bagunça. O ponto principal é: a própria classe cuida para que só haja uma instância e para que ela seja acessível de forma organizada. Na prática, o Singleton ajuda a evitar inconsistências e consumo desnecessário de recursos. Mas atenção: ele não é um remédio para qualquer problema de design, porque uso exagerado pode dificultar testes e aumentar o acoplamento. Então, ele é útil quando a unicidade faz sentido no projeto, não por esporte. Por isso, o gabarito é a letra D. As outras alternativas são padrões importantes, mas com finalidades diferentes: adaptação de interfaces, compartilhamento eficiente de objetos, armazenamento de estado e estruturação da comunicação entre objetos.