mvvm与mvc模型
-
MVC模型
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
- M:model 模型层(模型层接受改变状态最终发送给视图层展现)
- V:view 视图层(传递用户交互的指令给控制层)
- C:controller 控制层(控制层实现相应的逻辑代码后返回给模型层)
- MVC设计模型的一般理解三者都相互联系,视图层和模型层存在直接关系,模型层的数据由视图层来体现出来,如果模型层发生改变,意味着视图层也会发生相应的变化,而三者之间的关系实际也更像,模型层与视图层是通过控制层来进行联系。
- MVC模式的优缺点:
- 优点
- 高内聚低耦合
- 重用性高
- 可维护性高
- 有利于软件优化
- 部署快,生命周期成本低
- 缺点
- 增加系统结构和实现的复杂性
- 视图对模型数据的低效率访问,未变化数据重复访问
- 不适合小、中型应用程序
- 没有明确的定义
- MVVM设计模式
MVVM是Model-View-ViewModel的简写。即模型-视图-视图模型。【模型】指的是后端传递的数据。【视图】指的是所看到的页面。【视图模型】mvvm模式的核心,它是连接view和model的桥梁。
- M:model 模型层(后端传递的数据)
- V:view 视图层(所看到的页面)
- VM:ViewMode 视图模型层(连接view和model的桥梁)
- MVVM主要通过模型层的默认数据来在视图层中显示,在通过在视图层中修改数据来改变模型层中的数据,从而实现视图层中的变化。当从模型层转化为视图层时,通过后台数据的转化在视图层中显出,通过数据绑定,当从视图层转化为模型层时,由页面改变后台的数据,通过dom事件监听。两者相互实现,就是数据的双向绑定。
注意:在MVVM模式中,视图层和模型层不能直接联系,两者通过VM来进行关联,当数据发生改变,VM进行监听,然后通知视图,反之,通知数据做改变。
- MVVM模式的优缺点:
- 优点
- 解决了MVC中大量的DOM操作
- 双向绑定技术,当Model变化时,View-Model会自动更新,View也会自动变化,能很好的做到数据一致性
- 由于控制器的功能大都移动到View上处理,大大的对控制器进行了瘦身。不用再为看到庞大的控制器逻辑而发愁了。
- 可以对View或ViewController的数据处理部分抽象出来一个函数处理model。这样它们专职页面布局和页面跳转,它们必然更一步的简化。
- 缺点
- 数据绑定使得 Bug 很难被调试。你看到界面异常了,有可能是你 View 的代码有 Bug,也可能是 Model 的代码有问题。数据绑定使得一个位置的 Bug 被快速传递到别的位置,要定位原始出问题的地方就变得不那么容易了。
- 一个大的模块中model也会很大,虽然使用方便了也很容易保证了数据的一致性,当时长期持有,不释放内存就造成了花费更多的内存。
- 数据双向绑定不利于代码重用。客户端开发最常用的重用是View,但是数据双向绑定技术,让你在一个View都绑定了一个model,不同模块的model都不同。那就不能简单重用View了。