Android mvc,mvp,mvvm模式记录

文章目的:

(1)了解并区分MVC,MVP,MVVM。

(2)知道这三种模式在Android中如何使用。

 

mvc

MVC,Model View Controller,是软件架构中最常见的一种框架,简单来说就是通过controller的控制去操作model层的数据,并且返回给view层展示,具体见下图

Android mvc,mvp,mvvm模式记录

工作原理:用户触发点击事件,View层发指令到Controller层,Controller通知Model去拿数据,拿到数据后再View层显示

具体区分:

View层:在mvc中指的是那些.xml文件

Model层:那些和网络相关的其他代码(比如封装的网络请求类)

Controller层:activity,fragment

缺点:

1.View层的控制能力太差

比如:想改变一个按钮的显示隐藏直接在xml更改是不可能的,就只能在Controller更改,这就造成了Controller还要做View层的事情

2.复杂页面中会导致在Controller中太复杂,不好维护

3.从上图看出View层和Model层是相互相同的,两者间存在耦合,不利于开发,测试和维护.

mvp

MVP作为MVC的演化,解决了MVC不少的缺点,对于Android来说,MVP的model层相对于MVC是一样的,而activity和fragment不再是controller层,而是纯粹的view层,所有关于用户事件的转发全部交由presenter层处理。下面还是让我们看图

Android mvc,mvp,mvvm模式记录

从图可以看出,最大区别就是Model层和View层的解耦,而通过一个Presenter层来通讯

工作原理:用户触发View点击事件,View层告诉Presenter层,Presenter层告诉Model拿数据,然后返回给View层

虽然看起来View层和Model解耦了,但是明天增强了View层和Presenter层的关系,但是其实View层和Presenter层的通讯是通过接口实现的,具体的意思就是说我们的activity,fragment可以去实现实现定义好的接口,而在对应的presenter中通过接口调用方法。不仅如此,我们还可以编写测试用的View,模拟用户的各种操作,从而实现对Presenter的测试。这就解决了MVC模式中测试,维护难的问题。

MVVM

Android mvc,mvp,mvvm模式记录

从图中看出,它和MVP的区别貌似不大,只不过是presenter层换成了viewmodel层,还有一点就是view层和viewmodel层是相互绑定的关系,这意味着当你更新viewmodel层的数据的时候,view层会相应的变动ui。

项目中的使用

-----待------

参考:选择恐惧症的福音!教你认清MVC,MVP和MVVM