Questão de Engenharia de Software — Orientação a Objetos — INSTITUTO AOCP 2025
- Código
- qg539712
- Banca
- INSTITUTO AOCP
- Órgão
- IF-PB
- Ano
- 2025
- Nível
- Superior
- Cargo
- Analista de Tecnologia da Informação
- AAdapter.
- BDecorator.
- CSingleton.
- DStrategy.
- EObserver
GabaritoC — Singleton.
Gabarito: letra C. O padrão criacional que garante que apenas uma instância de uma classe seja criada em toda a aplicação, fornecendo um ponto de acesso global a essa instância, é o Singleton. Esse é o objetivo central do padrão, conforme a classificação clássica dos padrões de projeto (GoF).
Os padrões de projeto (design patterns) são soluções gerais e reutilizáveis para problemas recorrentes no desenvolvimento de software. Eles não são código pronto, mas sim descrições de como resolver um problema em um determinado contexto. A classificação mais conhecida é a do livro "Design Patterns: Elements of Reusable Object-Oriented Software" (GoF), que divide os padrões em três famílias:
Padrões Criacionais (Creational): lidam com o processo de criação de objetos, abstraindo a forma como eles são instanciados. Exemplos: Singleton, Factory Method, Abstract Factory, Builder, Prototype.
Padrões Estruturais (Structural): tratam da composição de classes e objetos para formar estruturas maiores. Exemplos: Adapter, Decorator, Composite, Facade, Proxy.
Padrões Comportamentais (Behavioral): focam na comunicação e interação entre objetos. Exemplos: Observer, Strategy, Command, State, Template Method.
O Singleton é um padrão criacional que garante a existência de uma única instância de uma classe em toda a aplicação e fornece um ponto de acesso global a ela. Isso é útil em situações como conexões de banco de dados, configurações globais, logs, entre outros, onde múltiplas instâncias poderiam causar inconsistências ou desperdício de recursos.
Na prática, o Singleton é implementado com um construtor privado (impedindo a criação direta com new), um atributo estático que guarda a única instância e um método estático (geralmente getInstance()) que retorna essa instância, criando-a na primeira chamada se ainda não existir.
A pegadinha da banca nesta questão é justamente a classificação dos padrões: o candidato pode confundir o Singleton com padrões estruturais ou comportamentais, mas a descrição do enunciado — "garantir que apenas uma instância seja criada" — aponta diretamente para um padrão criacional. As alternativas Adapter, Decorator, Strategy e Observer pertencem a outras famílias, como veremos a seguir.
Guarde a fronteira entre as três famílias: criacional (criação de objetos), estrutural (composição de classes/objetos) e comportamental (interação entre objetos). É exatamente nessa fronteira que as alternativas se dividem.
O Adapter é um padrão estrutural que permite que classes com interfaces incompatíveis trabalhem juntas, convertendo a interface de uma classe em outra interface esperada pelo cliente. Ele não tem relação com a criação de uma única instância. A banca o incluiu como distrator por ser um padrão conhecido, mas sua finalidade é completamente diferente.
O Decorator também é um padrão estrutural. Ele permite adicionar responsabilidades a um objeto dinamicamente, envolvendo-o em um objeto decorador que fornece funcionalidades extras. Não se trata de controlar a criação de instâncias, mas sim de estender comportamentos.
O Singleton é o padrão criacional que garante a existência de uma única instância de uma classe em toda a aplicação, fornecendo um ponto de acesso global a ela. A descrição do enunciado — "garantir que apenas uma instância seja criada em toda a aplicação, fornecendo um ponto de acesso global" — é exatamente a definição do Singleton. É a alternativa correta.
O Strategy é um padrão comportamental que permite definir uma família de algoritmos, encapsulá-los e torná-los intercambiáveis. Ele permite que o algoritmo varie independentemente dos clientes que o utilizam. Não tem relação com a criação de uma única instância.
O 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. Não se trata de controle de instanciação.
A banca tenta confundir o candidato misturando padrões de famílias diferentes. A palavra-chave é "criacional": o Singleton é o único padrão da lista que trata da criação de objetos. Se você memorizar a família de cada padrão, elimina as alternativas erradas rapidamente. 💪
Para questões de design patterns, monte uma tabela mental com as três famílias e seus principais exemplos. Isso ajuda a identificar rapidamente a qual família o padrão pertence e a responder com segurança.
Gabarito: letra C
Link permanente: /questoes/qg539712