【问题标题】:Clarification :MVC,MVP,MVVM澄清:MVC,MVP,MVVM
【发布时间】:2011-06-12 16:55:36
【问题描述】:

我正在阅读 MVC、MVP、MVVM 之间的区别

来源:here

我的疑问是,图表 (MVP) (MVVM) 在模型和演示者、模型和视图模型之间显示双向箭头。

Presenter 和 ViewModel 显然知道 Model。但这是否意味着 Model 知道 Presenter 和 ViewModel?

【问题讨论】:

  • 在 MVC pt 3 中说 View 对控制器一无所知。 Pt 4 说视图有关于控制器的知识。它自相矛盾。 Pt 4 应该是查看模型的知识。请确认

标签: model-view-controller mvvm mvp


【解决方案1】:

Presenter 和 ViewModel 显然知道 Model。但这是否意味着 Model 知道 Presenter 和 ViewModel?

没有。至少,按照我看待这些模式的方式,模型应该(理想情况下)除了它自己之外什么都不知道。我试图在my discussion of MVVM 中通过仅向模型显示单向箭头来强调这一点。

但是,许多人使用双向箭头来表示模型引发的事件。这在某种程度上取决于您如何看待这一点 - 模型可能需要通知其他层的变化。根据语言/框架,这可能看起来像模型与其他层“对话”。但是,从模型的角度来看,我尽量保持完全中立。例如,在 C# 中,我只使用一个事件,其中类型都是特定于模型的。它知道“某物”可能正在监听该事件,但不知道该“某物”是由什么组成的。

【讨论】:

  • @Reed 哇,你的讨论很好,我怎么会错过这么好的讨论。谢谢。现在一切都清楚了。
  • @Reed “它知道“某事”可能正在监听该事件,但不知道该“某事”的组成部分——你的意思是这里的 INotifyPropertyChanged 吗?
  • @ASP.netBeginner:谢谢!至少,对于来自 Windows 窗体的人来说,整个系列得到了很好的反馈;)
  • @ASP.netBeginner:我可能是 INotifyPropertyChanged,或者其他形式的自定义事件。模型必须通知数据正在更改或事件发生的任何方式,基本上都是将信息传播到模型之外......在某些人看来,这意味着在模型之外放置一个箭头。就个人而言,我仍然认为这是自给自足的,但这是我的看法。 (这就是为什么我让箭头单向...)
  • @Reed 非常感谢您花时间给出详细的解释。
猜你喜欢
  • 2012-07-09
  • 2019-06-04
  • 2012-09-03
  • 2010-11-20
  • 1970-01-01
  • 2019-09-06
  • 1970-01-01
  • 2011-03-06
  • 1970-01-01
相关资源
最近更新 更多