源自:https://segmentfault.com/q/1010000000534091?_ea=178721

Model:很简单,就是业务逻辑相关的数据对象,通常从数据库映射而来,我们可以说是与数据库对应的model

View:也很简单,就是展现出来的用户界面。

基本上,绝大多数软件所做的工作无非就是从数据存储中读出数据,展现到用户界面上,然后从用户界面接收输入,写入到数据存储里面去。所以,对于数据存储(model)和界面(view)这两层,大家基本没什么异议。但是,如何把model展现到view上,以及如何把数据从view写入到model里,不同的人有不同的意见。

MVC派的看法是,界面上的每个变化都是一个事件,我只需要针对每个事件写一堆代码,来把用户的输入转换成model里的对象就行了,这堆代码可以叫controller。

而MVVM派的看法是,我给view里面的各种控件也定义一个对应的数据对象,这样,只要修改这个数据对象,view里面显示的内容就自动跟着刷新,而在view 里做了任何操作,这个数据对象也跟着自动更新,这样多美。所以:

ViewModel:就是与界面(view)对应的Model。因为,数据库结构往往是不能直接跟界面控件一一对应上的,所以,需要再定义一个数据对象专门对应view上的控件。而ViewModel的职责就是把model对象封装成可以显示和接受输入的界面数据对象。

至于viewmodel的数据随着view自动刷新,并且同步到model里去,这部分代码可以写成公用的框架,不用程序员自己操心了。

最新文章

  1. Ajax (一)
  2. 剑指Offer:面试题26——复制复杂的链表(java实现)
  3. 时间工厂[XDU1013]
  4. 第四篇 SQL Server代理配置数据库邮件
  5. android 修改系统的dialog样式
  6. springmvc+spring+mybatis分页查询实例版本2.0
  7. Xstream 学习地址
  8. Spring Auto-Wiring Beans with @Autowired annotation
  9. MYSQL-- binlog事件详解
  10. cocos2d-x游戏开发系列教程-编译运行我们的第一个cocos2d-x游戏程序
  11. Nginx使用教程(二):Nginx配置性能优化之worker配置
  12. mysql GTID主从配置
  13. 关于一个常用的CheckBox样式
  14. Maven多模块项目
  15. 左右两栏div布局,高度自适应
  16. 几点建议,让Redis在你的系统中发挥更大作用
  17. JAVA设计模式详解(四)----------单例模式
  18. <meta content='IE=edge,chrome=1' http-equiv='X-UA-Compatible' />
  19. Javascript作用域学习笔记(三)
  20. YII 使用modules下的css,js,img

热门文章

  1. Keras Sequential顺序模型
  2. OpenCV Hello World
  3. JDK常用命令
  4. ATL控件签名之后页面还提示“在此页面上的Activex控件和本页上的其他部分及交互可能不安全”
  5. Elasticsearch 2.4.1 Bigdesk 插件安装
  6. better-scroll的用法,及其中的一个属性event._constructed详解
  7. sql unsigned
  8. 通过http流发送post请求
  9. CentOS7防火墙firewall相关操作
  10. Linux之chmod使用