MVVM 是 Model-View-ViewModel 的简写,MVVM 模式和 MVC 模式一样,主要目的是分离视图(View)和模型(Model)

接下来给大家分享一个总结的MVVM,来吧------------------------

  • MVC 存在的问题

    • 模型的代码很少
    • 控制器的代码一不小心就越来越多
    • 不好测试

MVVM

  • MVVM 结构图

  • MVVM 概念

    • 在 MVVM 中,view 和 view controller 正式联系在一起,我们把它们视为一个组件
    • view 和 view controller 都不能直接引用 model,而是引用视图模型
    • view model 是一个放置用户输入验证逻辑,视图显示逻辑,发起网络请求和其他代码
  • MVVM 使用注意事项

    • view 引用 view model,但反过来不行
    • view model 引用了 model,但反过来不行
    • 如果我们破坏了这些规则,便无法正确地使用 MVVM

MVVM 的优点

  • 低耦合:View 可以独立于 Model 变化和修改,一个 ViewModel 可以绑定到不同的 View 上
  • 可重用性:可以把一些视图逻辑放在一个 ViewModel 里面,让很多 view 重用这段视图逻辑
  • 独立开发:开发人员可以专注于业务逻辑和数据的开发 ViewModel,设计人员可以专注于页面设计
  • 可测试:通常界面是比较难于测试的,而 MVVM 模式可以针对 ViewModel 来进行测试

MVVM 是 Model-View-ViewModel 的简写,MVVM 模式和 MVC 模式一样,主要目的是分离视图(View)和模型(Model)

MVC 回顾

  • MVC 结构图

  • MVC 存在的问题

    • 模型的代码很少
    • 控制器的代码一不小心就越来越多
    • 不好测试

MVVM

  • MVVM 结构图

  • MVVM 概念

    • 在 MVVM 中,view 和 view controller 正式联系在一起,我们把它们视为一个组件
    • view 和 view controller 都不能直接引用 model,而是引用视图模型
    • view model 是一个放置用户输入验证逻辑,视图显示逻辑,发起网络请求和其他代码
  • MVVM 使用注意事项

    • view 引用 view model,但反过来不行
    • view model 引用了 model,但反过来不行
    • 如果我们破坏了这些规则,便无法正确地使用 MVVM

MVVM 的优点

  • 低耦合:View 可以独立于 Model 变化和修改,一个 ViewModel 可以绑定到不同的 View 上
  • 可重用性:可以把一些视图逻辑放在一个 ViewModel 里面,让很多 view 重用这段视图逻辑
  • 独立开发:开发人员可以专注于业务逻辑和数据的开发 ViewModel,设计人员可以专注于页面设计
  • 可测试:通常界面是比较难于测试的,而 MVVM 模式可以针对 ViewModel 来进行测试

最新文章

  1. String类型的属性和方法
  2. linux 使用 nvidia 的 gpu
  3. Python开发入门与实战15-IIS部署
  4. (转)mysql账号权限密码设置方法
  5. Mvc Controller 单元测试 Mock User.Identity.Name
  6. Qt QToolTip 控件背景的 QSS 设置方法(摘抄)
  7. [Git]03 如何查看提交历史
  8. css的学习笔记
  9. scp简单使用
  10. 前端iFrame跨域问题
  11. javascript浏览器事件
  12. python介绍及下载
  13. 获取百度地图POI数据三(模拟关键词搜索)
  14. 使用SSD检测框架训练自己的数据
  15. css布局方式总结
  16. 通过putty进行端口映射并且启动jupyter notebook
  17. js 高效拼接字符串
  18. FastDFS client for .net
  19. Python的浅拷贝与深拷贝
  20. 【java编程】重写HashCode和equals方法

热门文章

  1. hdu2642二维树状数组单点更新+区间查询
  2. php上传sae路径问题
  3. Android新旧版本Notification
  4. C#-WinForm-打印控件
  5. JVM学习笔记:JVM的体系结构与JVM的生命周期
  6. Leetcode 367. Valid Perfect Square
  7. 【BZOJ-4422】Cow Confinement 线段树 + 扫描线 + 差分 (优化DP)
  8. cmd执行命令返回执行信息
  9. CSS3伪类选择器:nth-child()(nth-child(odd)/nth-child(even))
  10. [NOIP2014] 提高组 洛谷P2312 解方程