Questão de Arquitetura de Software — MVC (Model-view-controller) — FGV 2023
Arquitetura de Software›MVC (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:
AFront Controller;
BObserver;
CDAO;
DFacade;
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.