这些图中的箭头的传说是什么(MVC-MVP-MVVM)?

Bas*_*mme 8 model-view-controller mvp mvvm

我试着理解MVC/MVP和MVVM模式之间的主要区别.我找到了这3张图,但我不确定是否理解它们.你帮我解释一下,虚线和连续线的传说是什么.

来自维基百科定义的MVC

来自维基百科定义的MVC

来自Microsoft MSDN网站的MVP

来自Microsoft MSDN网站的MVP

来自Microsoft MSDN网站的MVVM

来自Microsoft MSDN网站的MVVM

And*_*ejs 8

  • 实线是直接调用.
  • 虚线只是事件回调.

MVC和MVP(被动视图)模式之间的主要区别:

  • 在MVC视图中了解模型(调用getData()等来显示数据)
  • 在MVP(被动视图)的观点并不能知道模型.Presenter将数据从模型传递到视图.

更多细节:

  1. MVC vs MVP vs MVVM
  2. Martin Fowler深入介绍:GUI架构


Rac*_*hel 6

我认为虚线是间接引用

我不熟悉MVC或MVP,但在MVVM中View引用a ViewModelViewModel引用Model,用实线表示.

Models可广播消息或提高其被拾起事件通知ViewModel,并ViewModels可以发布了由回升的事件View,但这些对象不应该直接引用其他对象,所以他们是间接引用.例如,程序员意识到在a上引发事件通知的目的Model是为了ViewModel能够挂钩事件并处理某些事情,但是它Model本身从不引用ViewModel.

应该注意的是,如果您正在比较模式,那么它们是非常不同的模式,恰好碰巧对某些对象共享相同的命名约定.例如,ModelMVC中的a Model与MVVM中的不同.相反,MVC M+C等于MVVM VM,而MVC M包含MVVM MVM件的组合