Pular para o conteúdo principal

Questão de Engenharia de Software — Padrões de Projeto (Engenharia de Software) — VUNESP 2024

Engenharia de SoftwarePadrões de Projeto (Engenharia de Software)
Código
vu212234
Banca
VUNESP
Órgão
SAAE Aparecida
Ano
2024
Cargo
Ana ( )

Considere a seguinte classe implementada em PHP.

Imagem associada para resolução da questão

O padrão de projeto (design pattern) que pode ser reconhecido no trecho descrito é denominado

  1. ATemplate Method.
  2. BSingleton.
  3. CBuilder.
  4. DFlyweight.
  5. EDecorator.
Revelar gabarito e comentário

GabaritoB — Singleton.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Padrões de Projeto: Singleton

Gabarito: letra B. O padrão Singleton garante que uma classe tenha apenas uma única instância em todo o sistema e fornece um ponto de acesso global a ela. No trecho de código PHP, a presença de um construtor privado, um atributo estático privado que armazena a instância e um método estático público que a retorna (ou cria, se ainda não existir) são as marcas registradas desse padrão.

O padrão Singleton é um dos padrões de projeto mais conhecidos e cobrados em provas de concurso. Ele pertence à categoria dos padrões criacionais, ou seja, aqueles que lidam com o processo de criação de objetos. A ideia central é simples: em vez de permitir que qualquer parte do código crie novas instâncias de uma classe com o operador new, o Singleton controla esse processo, garantindo que exista apenas uma única instância durante toda a execução do programa.

A implementação típica em linguagens como PHP, Java ou C# segue uma estrutura bem definida:

  1. Construtor privado: impede que outras classes criem instâncias diretamente com new.

  2. Atributo estático privado: armazena a única instância da classe.

  3. Método estático público: o ponto de acesso global. Ele verifica se a instância já foi criada; se sim, retorna a existente; se não, cria uma nova e a armazena.

Esse padrão é útil em situações onde é necessário um único ponto de controle, como uma conexão com banco de dados, um gerenciador de configurações ou um log do sistema. A principal vantagem é evitar a criação desnecessária de múltiplos objetos que consumiriam recursos. A principal desvantagem, e por isso é criticado, é que ele introduz um estado global no sistema, o que pode dificultar os testes e criar acoplamento.

A banca explora o reconhecimento visual do padrão: o candidato precisa identificar a estrutura do código e associá-la ao nome correto. A pegadinha está em confundir o Singleton com outros padrões que também usam métodos estáticos ou construtores privados, mas com propósitos diferentes. O que define o Singleton é a combinação de construtor privado + atributo estático + método estático que retorna a instância única.

Guarde essa estrutura: é exatamente ela que separa o Singleton dos demais padrões listados nas alternativas.

1Objetivo
Garantir instância única
Acesso global
2Estrutura típica
Construtor privado
Atributo estático privado
Método estático público
3Vantagem
Evita múltiplos objetos
4Desvantagem
Estado global
Dificulta testes
Singleton (criacional)
LEVELsoulevel.com.br
Singleton (criacional): Objetivo (Garantir instância única, Acesso global); Estrutura típica (Construtor privado, Atributo estático privado, Método estático público); Vantagem (Evita múltiplos objetos); Desvantagem (Estado global, Dificulta testes)

Alternativa A — ❌ Incorreta

O Template Method é um padrão comportamental que define o esqueleto de um algoritmo em um método, permitindo que subclasses redefinam algumas etapas sem alterar a estrutura geral. Ele usa herança e métodos abstratos, não um construtor privado com instância única. O código do enunciado não mostra uma hierarquia de classes com um algoritmo a ser seguido.

Alternativa B — ✅ Correta ⟵ GABARITO

A estrutura descrita — construtor privado, atributo estático privado e método estático público que retorna a instância — é a implementação clássica do Singleton. O objetivo é garantir uma única instância da classe e fornecer um acesso global a ela, exatamente o que o código faz.

Alternativa C — ❌ Incorreta

O Builder é um padrão criacional que separa a construção de um objeto complexo de sua representação, permitindo que o mesmo processo de construção crie diferentes representações. Ele geralmente envolve um diretor e um builder com métodos para cada parte do objeto. O código do enunciado não mostra uma construção passo a passo de um objeto complexo.

Alternativa D — ❌ Incorreta

O Flyweight é um padrão estrutural que usa compartilhamento para suportar grandes quantidades de objetos de granularidade fina de forma eficiente. Ele separa o estado intrínseco (compartilhado) do extrínseco (único). O código do enunciado não mostra um mecanismo de compartilhamento de objetos para economizar memória.

Alternativa E — ❌ Incorreta

O Decorator é um padrão estrutural que anexa responsabilidades adicionais a um objeto dinamicamente, fornecendo uma alternativa flexível à herança para estender funcionalidade. Ele envolve uma interface comum e classes que a implementam e a "decoram". O código do enunciado não mostra uma cadeia de objetos que adicionam comportamento.

Gabarito: letra B

Link permanente: /questoes/vu212234