android MVC MVP MVVM如何区分
2016-08-18 16:04
417 查看
MVC
MVC, Model View Controller,是软件架构中最常见的一种框架,简单地说就是通过controller的控制去操作model层的数据,并且返回给view层展示,具体见下图
当用户发出事件的时候,view层会发送指令到controller层,接着controller层去通知model层更新数据,model层更新完数据以后直接显示在view层上,这就是MVC的工作原理。
对于android项目来说,layout.xml里面的xml文件就对应于MVC的view层,至于controller层就是各种activity了。
MVC存在的缺陷:
1,xml作为view层,控制力太弱了,你想去动态改变一个页面的背景,或者动态的隐藏或显示一个按钮,这些都没有办法在xml中做,只能把代码写在activity里,造成了activity既是controller层又是view层。
2,还有一个重要的缺陷就是view和model层是互相可知的,这意味着两层之间存在耦合,耦合对于一个大型程序来说是致命的。所以才演化出MVP和MVVM两种框架。
MVP
MVP作为MVC的演化,解决了MVC不少的缺点,对于Android来说,MVP的model层相对于MVC是一样的,而activvity和fragment不再是controller层,而是纯粹的View层,所有关于用户事件的转发全部交由presenter层处理。
从图中可以看出,最明显的差别就是view和model层不再相互可知了,完全的解耦,取而代之的是presenter层充当了桥梁的作用。用于操作view层发出的事件传递到presenter层中,presenter层去操作model层,并且将数据返回给view层,整个过程中view层和odel层没有联系。大家可能会问,虽然view层和mdel层解耦了,但是view和presenter层不是耦合在一起了吗?其实不是的,对于view层和presenter层的通信,我们是可以通过接口实现的,具体的意思就是说我们的activity,fragment可以去实现定义好的接口,而在对应的presenter中通过接口调用方法。
MVVM
它和MVP的区别貌似不大,只不过是presenter层换成了viewModel层,还有一点就是view层和viewModel层是相互绑定的关系,这意味着当你更新viewmodel等的数据的时候,view层会相应的变动ui.
MVC, Model View Controller,是软件架构中最常见的一种框架,简单地说就是通过controller的控制去操作model层的数据,并且返回给view层展示,具体见下图
当用户发出事件的时候,view层会发送指令到controller层,接着controller层去通知model层更新数据,model层更新完数据以后直接显示在view层上,这就是MVC的工作原理。
对于android项目来说,layout.xml里面的xml文件就对应于MVC的view层,至于controller层就是各种activity了。
MVC存在的缺陷:
1,xml作为view层,控制力太弱了,你想去动态改变一个页面的背景,或者动态的隐藏或显示一个按钮,这些都没有办法在xml中做,只能把代码写在activity里,造成了activity既是controller层又是view层。
2,还有一个重要的缺陷就是view和model层是互相可知的,这意味着两层之间存在耦合,耦合对于一个大型程序来说是致命的。所以才演化出MVP和MVVM两种框架。
MVP
MVP作为MVC的演化,解决了MVC不少的缺点,对于Android来说,MVP的model层相对于MVC是一样的,而activvity和fragment不再是controller层,而是纯粹的View层,所有关于用户事件的转发全部交由presenter层处理。
从图中可以看出,最明显的差别就是view和model层不再相互可知了,完全的解耦,取而代之的是presenter层充当了桥梁的作用。用于操作view层发出的事件传递到presenter层中,presenter层去操作model层,并且将数据返回给view层,整个过程中view层和odel层没有联系。大家可能会问,虽然view层和mdel层解耦了,但是view和presenter层不是耦合在一起了吗?其实不是的,对于view层和presenter层的通信,我们是可以通过接口实现的,具体的意思就是说我们的activity,fragment可以去实现定义好的接口,而在对应的presenter中通过接口调用方法。
MVVM
它和MVP的区别貌似不大,只不过是presenter层换成了viewModel层,还有一点就是view层和viewModel层是相互绑定的关系,这意味着当你更新viewmodel等的数据的时候,view层会相应的变动ui.
相关文章推荐
- MVC, MVP, MVVM比较以及区别-Android
- Android App的设计架构:MVC,MVP,MVVM与架构经验谈
- Android架构之MVC,MVP与MVVM
- Android App的设计架构:MVC,MVP,MVVM与架构经验谈
- Android 6.0 通话UI设计模式分析(MVC\MVP\MVVM)
- Android App的设计架构:MVC,MVP,MVVM与架构经验谈
- Android App的设计架构:MVC,MVP,MVVM经验谈
- Android App的设计架构:MVC,MVP,MVVM与架构经验谈
- Android App的设计架构:MVC,MVP,MVVM与架构经验谈
- Android App的设计架构:MVC,MVP,MVVM与架构经验谈
- 《Android源码设计模式》读书笔记 (25) 第25章 Android架构之MVC,MVP,MVVM
- mvc、mvvm、mvp模式区分
- Android App的设计架构:MVC,MVP,MVVM与架构经验谈
- Android App的设计架构:MVC,MVP,MVVM与架构经验谈
- MVC---Android App的设计架构:MVC,MVP,MVVM与架构经验谈
- Android App的设计架构:MVC,MVP,MVVM与架构经验谈
- 认清Android框架 MVC,MVP和MVVM
- 认清Android框架 MVC,MVP和MVVM
- Android App的三种架构模式MVC,MVP和MVVM
- Android App的设计架构:MVC,MVP,MVVM与架构经验谈