Clarification :MVC,MVP,MVVM

7
我正在阅读有关MVC、MVP、MVVM之间的区别。
来源:这里

alt text

我的疑惑是,图示(MVP)(MVVM)在模型和展示器之间显示双向箭头,在模型和视图模型之间也有箭头。

展示器和视图模型显然知道模型。但这是否意味着模型知道展示器和视图模型?


1
在MVC的第三部分中,提到View不知道Controller的任何信息。第四部分却说View知道Controller的信息。这是矛盾的。第四部分应该是View知道Model的信息。请确认。 - NSN
1个回答

7
Presenter和ViewModel显然知道Model的存在,但这是否意味着Model知道Presenter和ViewModel的存在呢?不是。至少从我对这些模式的看法来看,Model应该(理想情况下)除了自身以外无需关注任何事情。在我的MVVM讨论中,我试图通过仅显示指向Model的单向箭头来突出这一点。然而,许多人使用双向箭头来表示由Model引发的事件。这在某种程度上取决于你如何看待这个问题——Model可能需要通知其他层其内部的变化。根据语言/框架的不同,这可能看起来像是Model“与”其他层通信。但是,我尽量小心地保持这在Model的视角下完全中立。例如,在C#中,我只使用一个事件,其中类型都是特定于Model的。它知道“某些东西”可能会监听事件,但没有任何关于组成那个“某些东西”的知识。

@Reed,你的讨论很好,我怎么会错过这样好的讨论呢。谢谢你,现在事情清楚了。 - ASP.netBeginner
@Reed:“它知道“某物”可能正在监听该事件,但没有任何关于组成该“某物”的知识-你是指INotifyPropertyChanged吗?” - ASP.netBeginner
@ASP.net初学者:谢谢!整个系列对于那些从Windows Forms转来的人来说反馈非常好;) - Reed Copsey
@ASP.netBeginner:我可以是INotifyPropertyChanged,或者其他形式的自定义事件。模型通知数据正在改变或事件发生的任何方式,基本上都是将信息从模型传播出去...在某些人看来,这意味着将箭头从模型中取出。就个人而言,我仍然认为这是自包含的,但这是我的看法。(这就是为什么我使箭头单向的原因...) - Reed Copsey
@Reed 感谢您抽出时间给予详细的解释。 - ASP.netBeginner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接