美文网首页
Android 中MVC,MVP以及MVVM的理解

Android 中MVC,MVP以及MVVM的理解

作者: 向阳_a6c0 | 来源:发表于2020-04-20 17:59 被阅读0次

    MVC(M -> Model, V->View, C -> Controller)

    Model:数据模型,可以用来操作数据  (比如查询数据库数据,一般是纯java代码写的 不包含android api)

    View: 视图 通俗意义上说就是展示给用户看的页面  (在android mvc中 可以理解为 View = R.layout.XXX)

    Controller:控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开 (在android mvc中 可以理解为Activity)

    mvc

    如图所示,View的展示需要数据填充,然后就让Controller通知Model去请求数据,请求到数据之后通知view刷新,此时在android中Activity不仅充当了Controller的角色而且还承担部分view的职责

    activity model

    这种架构的缺陷就是随着业务的增多,页面的复杂度变大 Activity 就会变得很臃肿,所以就需要对现有架构进行拆分

    拆分方式一 (对view进行拆分)

    废话不多说看代码,model不变,增加一个dataview类 

                            

    activity dataview

    这样activity 代码就变得清晰多了 

    拆分方式二 : 对Controller(Activity)拆分 换句话说就是让activity充当view的角色,把原本Controller的工作单独抽出来  也就是我们所说的 mvp

    MVP(M -> Model, V->View, P ->  Presenter)

    Model:作用与MVC中定义的Model一样

    View: 视图 通俗意义上说就是展示给用户看的页面  (在android mvp中 可以理解为Activity)

    Presenter:意义与Controller相同,不同的是,在MVC中 Controller 是 一个Activity 

    mvp

    此时Activity就是一个view只做一切有关view的操作,业务代码全部放到presenter中,数据层不变,view与model的交互全部交给presenter来完成

    老规矩看代码

    这只是最基础的mvp  还没有引入接口和泛型

    MVVM(M -> Model, V->View, VM ->  ViewModel)

    基础架构其实还是基于mvc 或者 mvp ,只不过是加了一个 双向绑定功能,(mvc,mvp可以看做是一种设计规范,一种架构思想,而mvvm属于一种设计框架)

    继续上代码 

    也可以通过Jetpack 库中的 DataBinding 来实现数据绑定功能  具体参考databinding

    第一次写技术文章,说的有问题欢迎大家指出

    相关文章

      网友评论

          本文标题:Android 中MVC,MVP以及MVVM的理解

          本文链接:https://www.haomeiwen.com/subject/cytdihtx.html