MVC、MVP和MVVM
2016-05-08 16:58
260 查看
MVC
MVC模式涉及三种对象:模型对象、视图对象、控制器对象。模型对象中保存有应用程序的数据,视图对象负责显示模型对象的数据,并且允许用户对其进行编辑。控制器对象是模型对象和视图对象之间的协调者,负责对模型对象进行初始化,并将模型对象传递给视图对象进行解析显示。
MVC结构视图
MVC结构存在的问题
模型的代码很少
控制器的代码一不小心就越来越多
不好测试
MVP
MVP(Mode、View、Presenter)是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter
(MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会从直接Model中读取数据而不是通过
Controller。
MVP结构视图
在MVC里,View是可以直接访问Model的,View里会包含Model信息,不可避免的还要包括一些业务逻辑。在MVC模型里,更关注的Model的不变,而
同时 有多个对Model的不同显示,及View。所以,在MVC模型里,Model不依赖于View,但是View是依赖于Model的。不仅如此,因为有一些业务逻辑在View里实现了,导致要更改View也是比较困难的,至少那些业务逻辑是无法重用的。
在MVP里,Presenter完全把Model和View进行了分离,主要的程序逻辑在Presenter里实现。而且,Presenter与具体的
View是没有直接关联的,而是通过定义好的接口进行交互,从而使得在变更View时候可以保持Presenter的不变,即重用!
MVVM
MVVM
是 Model-View-ViewModel
的简写,MVVM 模式和 MVC模式一样,主要目的是分离视图(View)和模型(Model)
MVVM结构视图
在 MVVM
中, view 和 view controller正式联系在一起,我们把它们视为一个组件。view和
view controller都不能直接引用 model,而是引用视图模型 ViewModel。ViewModel是一个放置用户输入验证逻辑,视图显示逻辑,发起网络请求和其他代码。
MVVM 使用注意事项
view 引用 view model,但反过来不行
view model 引用了 model,但反过来不行
如果我们破坏了这些规则,便无法正确地使用 MVVM
MVVM 的优点
低耦合: View
可以独立于 Model 变化和修改,一个 ViewModel可以绑定到不同的 View上
可重用性:可以把一些视图逻辑放在一个 ViewModel里面,让很多
view重用这段视图逻辑
独立开发:开发人员可以专注于业务逻辑和数据的开发 ViewModel,设计人员可以专注于页面设计
可测试:通常界面是比较难于测试的,而 MVVM模式可以针对
ViewModel来进行测试
MVC模式涉及三种对象:模型对象、视图对象、控制器对象。模型对象中保存有应用程序的数据,视图对象负责显示模型对象的数据,并且允许用户对其进行编辑。控制器对象是模型对象和视图对象之间的协调者,负责对模型对象进行初始化,并将模型对象传递给视图对象进行解析显示。
MVC结构视图
MVC结构存在的问题
模型的代码很少
控制器的代码一不小心就越来越多
不好测试
MVP
MVP(Mode、View、Presenter)是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter
(MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会从直接Model中读取数据而不是通过
Controller。
MVP结构视图
在MVC里,View是可以直接访问Model的,View里会包含Model信息,不可避免的还要包括一些业务逻辑。在MVC模型里,更关注的Model的不变,而
同时 有多个对Model的不同显示,及View。所以,在MVC模型里,Model不依赖于View,但是View是依赖于Model的。不仅如此,因为有一些业务逻辑在View里实现了,导致要更改View也是比较困难的,至少那些业务逻辑是无法重用的。
在MVP里,Presenter完全把Model和View进行了分离,主要的程序逻辑在Presenter里实现。而且,Presenter与具体的
View是没有直接关联的,而是通过定义好的接口进行交互,从而使得在变更View时候可以保持Presenter的不变,即重用!
MVVM
MVVM
是 Model-View-ViewModel
的简写,MVVM 模式和 MVC模式一样,主要目的是分离视图(View)和模型(Model)
MVVM结构视图
在 MVVM
中, view 和 view controller正式联系在一起,我们把它们视为一个组件。view和
view controller都不能直接引用 model,而是引用视图模型 ViewModel。ViewModel是一个放置用户输入验证逻辑,视图显示逻辑,发起网络请求和其他代码。
MVVM 使用注意事项
view 引用 view model,但反过来不行
view model 引用了 model,但反过来不行
如果我们破坏了这些规则,便无法正确地使用 MVVM
MVVM 的优点
低耦合: View
可以独立于 Model 变化和修改,一个 ViewModel可以绑定到不同的 View上
可重用性:可以把一些视图逻辑放在一个 ViewModel里面,让很多
view重用这段视图逻辑
独立开发:开发人员可以专注于业务逻辑和数据的开发 ViewModel,设计人员可以专注于页面设计
可测试:通常界面是比较难于测试的,而 MVVM模式可以针对
ViewModel来进行测试
相关文章推荐
- 【C#反射-动态创建对象】
- Glib学习(0) 第一课 g_printf的helloworld
- '_fileno' was not declared in this scope
- python递归、迭代器和生成器在算法中的运用
- 第十周java 学习总结
- 剑指offer面试题(一)
- Java 包的命名
- 【Android】ListView的单选、多选的实现
- 高手详解SQL性能优化十条经验
- jquery使用历经
- 第十周java 学习总结
- (三)Struts2 拦截器
- MySQL 高级查询
- char 与 unsign 4000 ed char
- 动态规划—Problem D
- 【一周读书】先教育好自己,再谈教导孩子
- c++操作符new 与delete学习(1)
- 网络协议分层
- 第10、 11 周-职工有薪水啦
- 康托展开