MVC,MVP,MVVM区别

sinat_35436530 2018-08-22 10:24:04
加精
前段时间把ui线程跟Task异步这块算是弄清楚了。
现在关于设计模式感觉又懵B,看了好多篇文章,还是分不清。
例如在winform里面,用户在V层点击按钮,触发C层事件,然后调用M层的逻辑,如果M层包含了V层的逻辑(例如 MessageBox.Show)。这叫MVC?
如果M层不包含V层的逻辑,由c层得到M层的结果后在写V层的逻辑,这叫MVP?
至于MVVM还不是很理解。望大牛通俗举例解释一下这3种模式,以及优缺点。
...全文
6071 47 打赏 收藏 转发到动态 举报
写回复
用AI写文章
47 条回复
切换为时间正序
请发表友善的回复…
发表回复
一段formerly 2018-12-10
  • 打赏
  • 举报
回复
长知识了,学习学习,开拓下视野
weixin_43135266 2018-09-05
  • 打赏
  • 举报
回复
认真学习了,都是大佬啊
哈哈gogo 2018-09-03
  • 打赏
  • 举报
回复 1
额,不会也,帮你顶上去~~~~~~加油噢。
yjhjjdxsyz 2018-09-03
  • 打赏
  • 举报
回复
虽然不懂但是看起来很厉害的样子
weixin_43103328 2018-08-31
  • 打赏
  • 举报
回复
涨姿势了,学到了不少的东西。学习学习
xbmu3 2018-08-31
  • 打赏
  • 举报
回复
来学习学下,顶个贴
qq_35319987 2018-08-30
  • 打赏
  • 举报
回复
厉害了
XBG丶 2018-08-29
  • 打赏
  • 举报
回复
都是一群大佬,学习学习
LittleMomoKu 2018-08-28
  • 打赏
  • 举报
回复
学习学习!
baidu_27549073 2018-08-28
  • 打赏
  • 举报
回复
如果不写框架,页面不复杂,做简单后台,mvc相对而言代码量最少
baidu_27549073 2018-08-28
  • 打赏
  • 举报
回复
如果不写框架,mvc相对而言代码量最少
  • 打赏
  • 举报
回复
不论是MVC还是 MVP、MVVM 其实都强调数据绑定声明的能力。所以数据绑定功能的多少,并不是区分标准。

MVP 支持强大的数据绑定功能,实际上微软的 MVP 框架中大量地使用到高级的数据绑定功能。例如将控件的 DataSource 属性可以赋值为多种数据源对象,然后绑定控件。关键地,MVP 强调的是c#、vb 等等编程工程师的体验,而不是交互设计师的体验,所以它忽视了模板技术。

asp.net 由 webform 退回到 mvc,那么 asp.net 顶多只能跟 jsp、php 混了,而很难真正出头。
  • 打赏
  • 举报
回复
微软之所以在上世纪90年到到本世纪前10年成为桌面软件编程的霸主,除了 windows 操作系统之外,其为了 developer 所设计的各种技术框架看起来是那么地专业,主要就在于其(那时候)坚持 MVP 而不是回退到最原始最初级的 MVC 路线的结果。提供一组实用的企业级的控件供快速地开发,可以提高至少十倍开发效率,这就是早期 MVP 的目的。

然而当它的技术受到挑战时,例如 webform 的那种一遍遍刷新页面重建整个控件的技术面对于富客户端编程的 web3.0 编程技术而显得过于卡顿的时候,微软选择了放弃 MVP,这其实就是一大败笔。实际上 knockout 是我见过的做好的 MVVM 框架,比许多桌面系统的 MVVM 都好许多倍(比 WPF 的绑定模式也好太多了,主要是因为 WPF 控件体系太复杂太繁琐),但是微软并没有在 web 开发上有任何进取,而是用一个几千人的团队来抄袭别人10个人的小团队就开发出来的 java 框架。知道目前为止,微软在 web 前端开发方面,还是 typescript、knockout 作为其天花板,还是是没有当初25年前退出 vb 1.0 的时代的那种勇气。
  • 打赏
  • 举报
回复
引用 41 楼 Xiaokeai721 的回复:
MVC,Model View Controller,是软件架构中最常见的一种框架,简单来说就是通过controller的控制去操作model层的数据。
MVP作为MVC的演化,解决了MVC不少的缺点,对于Android来说,MVP的model层相对于MVC是一样的,而activity和fragment不再是controller层,而是纯粹的view层,所有关于用户事件的转发全部交由presenter层处理。
MVVM最早是由微软提出的,它和MVP的区别貌似不大,只不过是presenter层换成了viewmodel层,还有一点就是view层和viewmodel层是相互绑定的关系,这意味着当你更新viewmodel层的数据的时候,view层会相应的变动ui。


微软常见框架是各种 MVP,各种为了狂热的编程爱好者而深入开发的控件树结构和 api。asp.net mvc 是微软在放弃 webform 之后为了模仿 struts(当时是 java 上一个小流派,但是很时髦很出名)而作的,实际上此时 webform 没有重视前端,仅仅扔一个 jquery.js 文件到 asp.net 就把精力放到 asp.net mvc 上了。这其实就是 asp.net 技术衰落的必然。
Xiaokeai721 2018-08-27
  • 打赏
  • 举报
回复
MVC,Model View Controller,是软件架构中最常见的一种框架,简单来说就是通过controller的控制去操作model层的数据。 MVP作为MVC的演化,解决了MVC不少的缺点,对于Android来说,MVP的model层相对于MVC是一样的,而activity和fragment不再是controller层,而是纯粹的view层,所有关于用户事件的转发全部交由presenter层处理。 MVVM最早是由微软提出的,它和MVP的区别貌似不大,只不过是presenter层换成了viewmodel层,还有一点就是view层和viewmodel层是相互绑定的关系,这意味着当你更新viewmodel层的数据的时候,view层会相应的变动ui。
muzi92 2018-08-27
  • 打赏
  • 举报
回复
长知识了,学习学习,开拓下视野
qq_32582495 2018-08-27
  • 打赏
  • 举报
回复
https://www.cnblogs.com/icebutterfly/p/7977033.html
  • 打赏
  • 举报
回复
在 MVVM 中,倾向是,在 View 中尽量不再去编程序。尽量全靠绑定声明,而且是绑定控件属性到 VM 属性。这就跟 MVP 的倾向于写代码,完全不同了。喜欢写代码的人不喜欢 MVVM,只有又写代码由负责做大项目的人才喜欢 MVVM。
  • 打赏
  • 举报
回复
传统的 windows Form 控件体系,其最高层的理念,是强调控件去监听、去查找、去编程操纵的。

任何一种大的 UI 设计模式创新其实都是“全层次地”要进行设计,从顶层到底层都要适配。所以其实关键并不是纯技术,而是创意思路。一定是跳出了传统思维方式之外的东西,才可能主导创新。

所以这里先看一个模式最高层地理念和目的。而不是看其底层用没有用到什么技术语句。
  • 打赏
  • 举报
回复
引用 30 楼 Seilboy 的回复:
怎么能看出windows 控件使用了MVP模式呢?


这类是说明 windows 控件应该聚类为(更符合于) MVC 还是 MVP 模式,并不是纠结除了这三种模式之外还有没有别的(例如微软自己的叫法)模式的说法。
加载更多回复(27)

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧