MVC,MVP和MVVM三种模式的简单介绍

MVC

这里写图片描述
举个例子:你的界面有一个按钮,按下这个按钮去网络上下载一个文件。

Model:

而那些和网络连接相关的代码写在其他类里,比如你可以写一个专门的networkHelper类,这个就是model层。

View:

这个按钮是view层的,是使用xml来写的。

Controller:

那怎么连接前面的这两层呢?是通过button.setOnClickListener()这个函数,这个函数就写在了activity中,就对应于我们的controller层。是不是很清晰了。

MVP

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

和MVC最大的不同,MVP把activity作为了view层,整个activity没有任何和model层相关的逻辑代码,取而代之的是把代码放到了presenter层中,presenter获取了model层的数据之后,通过接口的形式将view层需要的数据返回给它就OK了。

这样的好处是什么呢?首先,activity的代码逻辑减少了,其次,view层和model层完全解耦,具体来说,如果你需要测试一个http请求是否顺利,你不需要写一个activity,只需要写一个java类,实现对应的接口,presenter获取了数据自然会调用相应的方法,相应的,你也可以自己在presenter中mock数据,分发给view层,用来测试布局是否正确。

MVVM

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

此博客用于个人笔记查阅,同时也和大家一起分享,如有不对,恳请指正。

猜你喜欢

转载自blog.csdn.net/weixin_37011894/article/details/79419840