Pular para o conteúdo principal

Questão de Arquitetura de Software — MVC (Model-view-controller) — FGV 2023

Arquitetura de SoftwareMVC (Model-view-controller)
Código
fg063613
Banca
FGV
Órgão
DPE-RS
Ano
2023
Nível
Superior
Cargo
Analista - Área de Apoio Especializado - Tecnologia da Informação - Desenvolvimento de Sistemas
A divisão em camadas da arquitetura MVC permitiu o uso de diversos padrões de projeto de forma simples, e, com toda a padronização obtida, aliada a ferramentais como injeção de dependências e inversão de controle, ocorreu o surgimento de diversos frameworks, voltados para as diferentes camadas da arquitetura.Para a camada Model, um padrão essencial é o:
  1. AFront Controller;
  2. BObserver;
  3. CDAO;
  4. DFacade;
  5. EComposite.
Revelar gabarito e comentário

GabaritoC — DAO;

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”.

MVC e Design Patterns (camada Model)

Gabarito: letra C — DAO. O padrão DAO (Data Access Object) é essencial para a camada Model em arquiteturas MVC, pois encapsula o acesso e a persistência de dados, isolando a lógica de negócio dos detalhes de armazenamento. Embora outros padrões, como Observer, possam ser utilizados na interação entre Model e View, o DAO é diretamente voltado à responsabilidade central do Model: gerenciar e manipular dados.

A questão testa o conhecimento sobre quais padrões de projeto são mais adequados a cada camada do MVC. Vamos analisar cada alternativa:

Padrão de Projeto

Camada MVC Principal

Função no MVC

Relação com a Camada Model

Front Controller

Controller

Ponto único de entrada para requisições, centralizando roteamento

Nenhuma; é um padrão de apresentação

Observer

View (comunicação Model-View)

Notifica a View sobre mudanças no estado do Model

Importante para a comunicação, mas não essencial para a implementação interna do Model

DAO

Model

Abstrai e encapsula o acesso a dados (persistência)

Essencial; isola a lógica de negócio dos detalhes de armazenamento

Facade

Qualquer camada

Fornece interface simplificada para um subsistema complexo

Pode ser usado, mas não é específico ou essencial para o Model

Composite

Qualquer camada

Trata objetos individuais e composições de maneira uniforme

Pode ser usado, mas não é específico ou essencial para o Model

Alternativa A — ❌ Incorreta (Front Controller)

O Front Controller é um padrão de apresentação, pertencente à camada Controller. Ele atua como ponto único de entrada para requisições, centralizando o roteamento e o tratamento de solicitações. Não tem relação direta com a camada Model.

Alternativa B — ❌ Incorreta (Observer)

O Observer é um padrão comportamental que define uma dependência um-para-muitos entre objetos, de modo que quando um objeto (sujeito) muda de estado, todos os seus dependentes são notificados. No MVC, ele é frequentemente usado para que a View seja notificada sobre mudanças no Model, garantindo a atualização da interface. Apesar de ser importante para a comunicação entre Model e View, o Observer não é exclusivo ou essencial para a camada Model isoladamente; o Model pode ser implementado sem ele (por exemplo, com polling).

Alternativa C — ✅ Correta (DAO)

O Data Access Object (DAO) é um padrão de persistência que abstrai e encapsula o acesso a dados (banco de dados, arquivos, serviços externos). Na camada Model, ele é fundamental para separar a lógica de negócio dos mecanismos de persistência, permitindo que o Model se concentre em regras de negócio sem se preocupar com detalhes de armazenamento. DAOs fornecem métodos como inserir(), buscar(), atualizar() e excluir(), tornando o código mais modular e testável.

Alternativa D — ❌ Incorreta (Facade)

O Facade é um padrão estrutural que fornece uma interface simplificada para um subsistema complexo. Pode ser utilizado em qualquer camada, inclusive no Model para simplificar o acesso a um conjunto de classes de negócio, mas não é um padrão essencial ou específico da camada Model. É mais uma opção de design do que uma necessidade.

Alternativa E — ❌ Incorreta (Composite)

O Composite é um padrão estrutural que compõe objetos em estruturas de árvore para representar hierarquias parte-todo. É útil para situações como manipulação de menus, pastas ou documentos, mas não é inerente à camada Model. Pode ser usado dentro do Model para representar dados hierárquicos, mas não é um padrão essencial.

NÃO CAIA NESSA!

O Observer é um padrão fortemente associado ao MVC por ser o mecanismo clássico de notificação entre Model e View. O candidato pode pensar que ele é essencial para o Model, mas o enunciado pede um padrão específico da camada Model, e não da interação entre camadas. O DAO é o padrão que realmente atende à função principal do Model: gerenciamento e persistência de dados.

Gabarito: letra C — DAO.

Link permanente: /questoes/fg063613