MVC、MVP、 MVVM的粗浅认知

    xiaoxiao2021-04-16  35

     MVC、MVP、 MVVM

     

    三者的结构分别如图所示。

    MVC:Model-----View-----Controller,Model代表模型,大多时候代表的是本地数据或者是网络获取数据的封装类型,数据的获取与加载基本在这里进行;View代表视图层,也就是UI;Controller控制器,获取数据并绑定界面,实现相关的逻辑。MVC容易理解,容易修改,有一定的解耦性,举个简单的例子:在android中,我们的视图View一般以xml的文件布局显示,Model代表我们去加载本地数据或者请求网络获取数据,Activity就是Controller了,我们在Activity下初始化控件,获取数据,并将两者绑定。

    MVP:Model----View----Presenter,Model代表数据层,获取存储本地数据或者是网络获取数据;View代表视图层,这里Activity,Fragement也可是说是粗颗粒的View;Presenter代表业务逻辑层,作为Model与View通信的桥梁,完全解耦了Model与View。

    MVVM:Model----ViewModel---View,Model代表数据层,数据的存储与获取及网络;ViewModel也代表了逻辑层,但同时会修改View与Model的状态;View视图层。在这里,View与Model进行了双向绑定,也是data-binding,数据的修改会导致View的改变或者View的修改也会导致数据的改变。这种模式有点像ListView与Adapter、数据集合的关系,Adapter就是ViewModel的角色,基于View进行绑定,又与数据集合绑定,当数据发生改变时,调用Adapter的notifyDataSetChange后直接更新View。

     

    MVC 与 MVP 简单比较

    MVC中用户可以通过View获取或修改Modeld的状态,也可以通过Controller直接来改变View,三者之间都产生了关联,耦合性还是比较高的,而在MVP中,View不能直接访问Model,两者需要通过Presenter来请求。

      MVP 与 MVVM简单比较 MVVM也是从MVP演化的,相对于MVP, VM与V之间是双向bind的,即 VM与View的属性保持一至,MVVM加强了VM与view的关联性。

    提供了两种MVP的实现模式:demo地址:点击打开链接

    转载请注明原文地址: https://ju.6miu.com/read-672390.html

    最新回复(0)