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:
- A)Front Controller;
Errada: Front Controller é padrão mais ligado à camada de controle, centralizando o recebimento e o encaminhamento das requisições.
- B)Observer;
Errada: Observer é usado para notificar mudanças entre objetos, sendo mais associado a atualização de interfaces ou eventos.
- C)DAO;
Certa: DAO é o padrão clássico da camada Model para separar a lógica de acesso a dados do restante da aplicação.
- D)Facade;
Errada: Facade serve para simplificar o uso de um conjunto de classes ou subsistemas, não para representar o núcleo do Model.
- E)Composite.
Errada: Composite organiza objetos em estrutura hierárquica, e não é o padrão essencial da camada Model.
Gabarito: C
Na arquitetura MVC, o sistema se separa em três partes: Model, View e Controller. A grande sacada é tirar cada responsabilidade do lugar errado, deixando o código mais organizado, mais reutilizável e mais fácil de manter. Em prova, isso costuma aparecer junto com padrões de projeto que “encaixam” naturalmente em cada camada. Na camada Model, você cuida da regra de negócio e do acesso aos dados. Por isso, o padrão mais cobrado e mais essencial ali é o DAO (Data Access Object), que isola a aplicação da forma como os dados são persistidos ou recuperados. Em outras palavras: o Model fala com os dados sem precisar saber se eles vêm de banco, arquivo ou outro lugar. Isso combina muito com frameworks e com a ideia de injeção de dependência. Já os outros padrões da lista são típicos de outras partes da arquitetura. Front Controller é mais ligado à entrada única de requisições, normalmente na camada de controle. Observer costuma aparecer na comunicação entre objetos, inclusive em mecanismos de atualização da interface. Facade simplifica o acesso a subsistemas, e Composite organiza estruturas em árvore. Portanto, o gabarito C está correto porque DAO é o padrão essencial associado à camada Model.