• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > ASP.NET小结之MVC, MVP, MVVM比较以及区别(二)

ASP.NET小结之MVC, MVP, MVVM比较以及区别(二)

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了pro asp.net core mvc,mvc与asp.net的区别,mvc框架 asp.net,mvc asp.net,精通asp.net mvc 5等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

上一篇得到大家的关注,非常感谢。由于自己对于这些模式的理解也是有限,对于这些模式的比较,是结合自己的理解,一些地方不一定准确,但是只有亮出自己的观点,才能抛砖引玉不是? 欢迎各位拍砖。:)

四. MVP模式

     4.1 MVP的思想

     4.2 UI界面接口化

     4.3 Presenter —— Model和View之间的桥梁

     4.4 MVP的代码结构和时序图

     4.5 MVP模式总结

五. MVVM模式

     5.1 MVVM模式的设计思想

     5.2 MVVM模式结构图

六. MVC, MVP和MVVM模式使用场景总结
</div>

四, MVP模式

MVP模式也是一种经典的界面模式。MVP中的M代表Model, V是View, P是Presenter。
下面例子中的完整代码,可以在这里下载:  WinformMVP源码
大家还可以比较这篇文章 浅析MVP模式中V-P交互问题及案例分享

4.1 MVP的思想
MVP模式在我看来,是一个真正意义上的隔离View的细节和复杂性的模式。为什么这么说:
因为在其它模式中V都代表的是UI界面, 是一个html页面,XAML文件或者winform界面。但是在MVP模式中的V代表的是一个接口,一个将UI界面提炼而抽象出来的接口。接口意味着任何实现了该接口的界面,都能够复用已有的Presenter和Model代码。

4.2 UI界面接口化
要很好的理解MVP, 就要有把UI界面接口化的能力。看下面的界面中,将红色标记的User Control抽象一下,就能得到下面的接口

 

界面中的2个输入框被抽象成了UserName和UserAge两个属性。Save按钮的点击事件,被抽象成了事件UserAddEvent。winform中实现该接口的代码如下:

       public string UserAge
       {
           set { this.txbAge.Text = value; }
           get { return this.txbAge.Text; }
       }

       public UserAdd()
       {
           InitializeComponent();
       }

       private void btnAdd_Click(object sender, EventArgs e)
       {
          if (UserAddEvent != null) UserAddEvent(this, e);
       }
   }
</div>

下面拿UserAge属性来解释一下,UI界面接口化的魔力。当后端代码要获取界面上的年龄值,就只需要get属性, 要更新界面显示的时候,就只需要set属性。
这个时候,后端代码对于界面的操作,被抽象成了对于UserAge属性的操作了,也就是和具体的界面显示无关了。

4.3 Presenter —— Model和View之间的桥梁
上文提到的后端代码中,包含了P和M. M和MVC中一样,指的是逻辑代码。P则是Model和View之间的桥梁,负责将对应的Model和View组合到一起。

针对上面的IUserAdd, 对应的Presenter代码是:

      //Presenter构造函数中,将view和model作为参数传入

       public UserAddPresenter(IUser model, IUserAdd view)
       {
           _model = model;
           _view = view;
           WireUpViewEvents();
       }

       private void WireUpViewEvents()
       {
           _view.UserAddEvent += _view_UserAdd;
       }

      //当view的UserAdd事件触发,取得UI中的数据,调用model逻辑处理,添加新用户。
     //同时发送User_ADDED消息到系统中(系统中其它UI部分接收消息,比如这里的DataGrid,它接收到User_ADDED之后,会刷新)
       private void _view_UserAdd(object sender, EventArgs e)
       {
           var user = new User
                      {
                          Name = _view.UserName,
                          Age = Convert.ToInt32(_view.UserAge)
                      };
           _model.AddItem(user);
           _facade.SendNotification(ApplicationFacade.USER_ADDED);
       }
}
</div>

4.4 MVP的代码结构和时序图
这里的MVP中的代码结构图和时序图,能够更好的帮助理解MVP模式

4.5 MVP模式

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • ASP.NET Core发送邮件的方法
  • 在ASP.NET Core 中发送邮件的实现方法(必看篇)
  • Asp.net core WebApi 使用Swagger生成帮助页实例
  • ASP.NET core Web中使用appsettings.json配置文件的方法
  • ASP.NET Core部署前期准备 使用Hyper-V安装Ubuntu Server 16.10
  • ASP.NET Core应用中与第三方IoC/DI框架的整合
  • ASP.NET Core程序发布到Linux生产环境详解
  • 详解ASP.NET Core 网站发布到Linux服务器
  • ASP.NET Core全面扫盲贴
  • 基于ASP.NET Core数据保护生成验证token示例

相关文章

  • 2017-05-11Ajax实现评论中顶和踩功能的实例代码
  • 2017-05-11ASP.NET中文件上传下载方法集合
  • 2017-05-11asp.net 数据库的连接和datatable类
  • 2017-05-11EasyUI Tree+Asp.net实现权限树或目录树导航的简单实例
  • 2017-05-11.NET命令行解析器示例程序(命令行选项功能)
  • 2018-08-20.net msmq消息队列实例详解
  • 2017-05-11配置Visual Studio 以调试.net framework源代码第1/2页
  • 2017-05-11几种判断asp.net中session过期方法的比较
  • 2017-05-11精通ASP.NET中弹出窗口技术
  • 2017-05-11asp.net 购物车实现详细代码

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • ASP.NET MVC 项目直接预览PDF文件
    • Repeater控件动态变更列(Header,Item和Foot)信息(重构cs)
    • asp.net如何在图片上加水印文字具体实现
    • ASP.NET下将Excel表格中的数据规则的导入数据库思路分析及实现
    • Asp.net 下载功能的解决方案
    • asp.net 用继承方法实现页面判断session
    • Asp.net Core 初探(发布和部署Linux)
    • ASP.Net执行cmd命令的实现代码
    • Aspose.Cells 读取受保护有密码的Excel文件
    • Asp.net mvc 权限过滤和单点登录(禁止重复登录)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有