移动端开发设计模式

2019-08-26  本文已影响0人  zhuxu

MVC、MVP、MVVM

MVC

                  1.- UI 变化操作 -
                2.需修改model的数据➡️            2.通知修改➡️
用户输入—— —— ——View —— —— —— —— ——Controller—— —— —— —— ——Model
                      ⬅️修改通知               ⬅️需修改的UI
                       2. --- 直接通知修改Model层的数据 ---
描述:
1.view 接收用户的输入
2.需UI变化操作(不涉及业务的调用)即可直接与Controller交互即可
3.需要修改Model数据,即需要通过Controller才能修改的
   view层可直接更新Model的数据而不必通过Controller
4.Model层数据发生变化,若需要修改UI,则需要通过Controller对View的通知修改UI
缺点:
1.Activity 责任不分明,十分臃肿
2.Activity 由于生命周期的功能处理承担View层的职责(接收用户操作、加载应用布局),还需承担Controller层的职责
3.随着界面增多和逻辑复杂度提高,Activity的代码量增加,更加臃肿

MVP

解决MVC的Activity臃肿问题,分离了Activity重的View层和Controller层的职责,从而对Activity的代码量进行优化、瘦身,所以出现了MVP

                 需修改的Model层实例➡️     通知修改➡️
用户输入—— —— ——View—— —— —— ——Presenter—— —— —— ——Model
                    ⬅️通知修改           ⬅️需修改UI
描述:
1.View层接收用户输入
2.View层与Model交互必须通过Presenter
优点:
1.低耦合,通过Presenter 实现数据和视图层的交互,完全隔离了View和Model层,二者互不干涉
避免了View和Model的直接联系,通过Presenter实现两者沟通
2.Activity代码更加简洁,简化Activity的职责。仅负责UI相关操作,其余复杂的逻辑代码提取到Presenter层

MVVM

为了更加分离Model和View层 ,释放Activity的压力。于是出现了MVVM

                 修改Model层➡️                         通知修改➡️
用户输入—— —— ——View—— —— ——DataBinding—— —— ——ViewMode—— —— ——Model
                  ⬅️通知修改                          ⬅️需修改UI
优点:
1.View层和Controller层直接耦合程度进一步降低,分离更彻底,减轻了Activity的压力

MVC和MVP的区别

1.层及含义
MVC:V对应的是 布局文件&Activity
MVP:V对应的是Activity,简化了Activity 的职责
2.业务逻辑处理方式
MVC:Controller
MVP:Presenter
3.View与Model的交互
MVC 直接、间接
MVP 必须经过Presenter (完全隔离了View&Model)
4.View与业务逻辑的交互
MVC:Activity(Controller层)
MVP:接口(Presenter层)

三种模式出现的初衷

1.MVC
为解决程序模块化问题,于是MAVC模式出现了,将业务逻辑、数据处理、与界面显示分离出来。即形成了M、V、C层
2.MVP
在MVC模式中,M层和C层还是相互交互,隔离度不够,同时写到Activity使得Activity代码臃肿,于是出现了MVP,隔离了M层和V层直接连接,释放了Activity的压力
3.MVVM
为了更加分离M层和V层,释放Activity的压力,于是出现了MVVM,使得M层和C层的耦合度更加降低,分离了更加彻底,更加减轻了Activity的压力

转自:https://juejin.im/entry/5d632c296fb9a06afc254d58?utm_source=gold_browser_extension

上一篇 下一篇

猜你喜欢

热点阅读