Architecture DAO应该在MVC模式中使用哪个组件?

Architecture DAO应该在MVC模式中使用哪个组件?,architecture,Architecture,如标题所示,DAO应该位于模型块中,或者分离成另一个块,并直接与模型块交互 谢谢 关于MVC,现在有很多不同的观点和看法,要确定放在哪里是很困难的。你需要使用对你有用的东西和你觉得实用的东西。我的首选是让模型包含视图显示和交互的数据,控制器可以与视图和模型交互。这与传统方法有所不同,控制器仅与模型交互,模型与视图交互。有时,我发现让模型提供事件以及让视图绑定到这些事件是不值得的。不可避免地,您的模型、视图和控制器紧密耦合,通常不会重复使用。测试不同的部分仍然比较容易,因为它们已经被分开了 这还取

如标题所示,DAO应该位于模型块中,或者分离成另一个块,并直接与模型块交互


谢谢

关于MVC,现在有很多不同的观点和看法,要确定放在哪里是很困难的。你需要使用对你有用的东西和你觉得实用的东西。我的首选是让
模型
包含
视图
显示和交互的数据,
控制器
可以与
视图
模型
交互。这与传统方法有所不同,
控制器
仅与
模型
交互,
模型
视图
交互。有时,我发现让
模型提供事件以及让
视图绑定到这些事件是不值得的。不可避免地,您的
模型
视图
控制器
紧密耦合,通常不会重复使用。测试不同的部分仍然比较容易,因为它们已经被分开了

这还取决于您在何处使用该模式

对于Windows窗体,我倾向于将MVP与被动视图结合使用,对于web前端,我倾向于使用Martin Fowler所称的表示模型或MVVM风格中通常称为
ViewModel

考虑到这些“约束”,我会让
控制器
与存储库或读取模型交互,并将相关数据传递给
模型
模型
不会与任何形式的DAO直接交互

有时候人们喜欢把
模型看作是业务层,但我不同意这种想法

试着把你的前端
模型
想象成只代表你的
视图
状态,看看它是如何为你工作的。就web api而言,
模型
表示跨越网络的状态,但通常是前端的状态表示。
控制器将使用它执行任何相关功能