作为标题,DAO应该在模型块中还是应该分成另一个块并直接与模型块交互?
谢谢!
答案 0 :(得分:0)
如今,有关MVC的变化和意见很多,很难确定放置位置。您需要使用对自己有用的东西,以及发现实用的东西。我的偏好是让Model
包含View
显示并与之交互的数据,并且Controller
可以与View
和Model
进行交互。这与传统方法有所不同,传统方法是Controller
仅与Model
进行交互,而Model
与View
进行交互。我有时发现,Model
提供事件是不值得的,而将View
绑定到这些事件是不值得的。您的Model
,View
和Controller
不可避免地紧密相连,通常不会被重复使用。鉴于已经将它们分开,测试各个位仍然要容易得多。
这还取决于您在哪里使用模式。
对于Windows窗体,我倾向于将MVP与更多的被动视图结合使用,对于Web前端,我倾向于将Martin Fowler称为表示模型的方式使用,或者在MVVM样式中通常称为ViewModel
。
考虑到这些“约束” ,我将让Controller
与存储库或 read模型进行交互,并传递Model
的相关数据。 Model
不会直接与任何形式的DAO交互。
有时候人们喜欢将Model
视为业务层,但我不同意这个想法。
尝试将您的前端Model
看作只是代表您的View
状态,并了解它如何为您工作。就网络API而言,Model
表示跨越线路的状态,但无论如何通常通常是前端的状态表示。 Controller
将使用它来执行任何相关功能。