我所搭建的MVVM设计模式的Android框架(一)
写在前面:
之前只是总在别人嘴里听说MVVM的设计模式,可能是因为环境问题,主要原因还是自己懒惰吧,只是听说却从未见过。直到最近到了新公司接手的别人的项目才发现,还有这种操作(其实就是看到了DataBinding)?感觉像发现了一个新大陆,也燃起了我重新开始写文章的想法。在此我要感谢我的新公司,也要感谢这个让我接触到新知识的这个陌生人,后面这个系列的文章都是从他这个项目基础上修改后抽离出来生成的依赖。最后,希望自己能坚持把这个系列写完吧。下面开始都是我自己的理解,身边也没有能指导我的人,我也是摸着石头过河,如果有不正确的地方,希望指出。
一、我所理解的MVVM
在之前,我一直以为MVVM是四部分,M、V、V、M,当时就想,为什么会有两个M和两个V?现在才知道,M(Model模型,也就是Android中的Bean类)、V(View视图,在Android中可以看做Activity)、VM(ViewModel,我的理解就是沟通View和Model的通道),到现在我对MVVM设计模式的直观感受就是Activity中的代码少了,只有更新UI的操作了,逻辑的处理都交给了ViewModel层,结构清晰看着方便。
1.MVC
在MVC设计模式下,主要是通过View调用Controler中的方法生成Model直接返回给View,再由View自己更新自己。
MVC.png
2.MVP
在MVP设计模式下,是通过接口回调,View触发Presenter,Presenter生成Model触发View返回Model的引用,View通过获得的Model更新自己。其实感觉上好像并没有什么区别,可能是因为Android本身的性质就轻Model层吧。
MVP.png
MVVM
在MVVM设计模式下,通过双向绑定把View和Model关联在一起,通过ViewModel维护两者的关系,而View和Model都没有对方的引用。
MVVM.png