Os padrões de desenvolvimento visam resolver problemas recorrentes na implementação de sistemas, com a definição de soluções padronizadas, amplamente testadas e com modelos bem-organizados, utilizando a notação UML. Supondo que os gastos com a manutenção de um determinado sistema estejam muito altos, devido à proliferação de instruções SQL ao longo de todo o código, e você tenha sido contratado para refatorá-lo, qual padrão deverá utilizar para a melhoria da estratégia de persistência e consequente redução do custo de manutenção?

Questão

Os padrões de desenvolvimento visam resolver problemas recorrentes na implementação de sistemas, com a definição de soluções padronizadas, amplamente testadas e com modelos bem-organizados, utilizando a notação UML. Supondo que os gastos com a manutenção de um determinado sistema estejam muito altos, devido à proliferação de instruções SQL ao longo de todo o código, e você tenha sido contratado para refatorá-lo, qual padrão deverá utilizar para a melhoria da estratégia de persistência e consequente redução do custo de manutenção?

Alternativas

A) Observer

B) Proxy

C) Data Access Object

96%

D) Flyweight

E) Service Locator

Explicação

O problema descrito é a proliferação de instruções SQL espalhadas por todo o código, o que aumenta o acoplamento entre a lógica de negócio e a lógica de acesso a dados, elevando o custo de manutenção (qualquer mudança no banco/consulta exige alterar muitos pontos do sistema).

O padrão que visa centralizar e encapsular o acesso a dados, isolando o código SQL em uma camada específica e oferecendo uma interface bem definida para operações de persistência (CRUD, consultas etc.) é o Data Access Object (DAO).

Com DAO:

  1. As instruções SQL ficam concentradas em classes de acesso a dados;
  2. A aplicação passa a depender de métodos (ex.: clienteDAO.buscarPorId(id)) em vez de SQL espalhado;
  3. Mudanças na estratégia de persistência (troca de SGBD, ajuste de queries, uso de ORM) tendem a impactar menos o restante do código.

Analisando as demais alternativas:

  • Observer: trata de notificação/assinatura de eventos, não de persistência.
  • Proxy: controla acesso a um objeto (lazy loading, segurança), não resolve SQL espalhado como foco principal.
  • Flyweight: otimiza uso de memória com compartilhamento de objetos, não persistência.
  • Service Locator: localiza serviços/recursos (ex.: injeção/lookup), não organiza o SQL em uma camada própria.

Alternativa correta: (C).

Questões relacionadas

Ver últimas questões

Comece a estudar de forma inteligente hoje mesmo

Resolva questões de concursos e vestibulares com IA, gere simulados personalizados e domine os conteúdos que mais caem nas provas.

Cancele quando quiser.