移动端开发设计模式

MVC、MVP、MVVM

  • 功能模块化 —— 内部高聚合、模块功能低耦合
  • 提高开发效率——视图显示、业务处理、数据处理
  • 提高测试效率——方便测试、定位问题

MVC

  • M(Model) ——模型层——业务逻辑/数据存储 ——外观类/接口访问
  • V(View) ——视图层——展示洁面/接收输入 ——XML/Activity
  • C(Controller)——控制层——业务逻辑/连接M&C——Activity
                  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

  • M(Model) ——模型层——业务逻辑/数据储存——外观类/接口访问
  • V (View) ——视图层——View绘制/用户交互——XML/Activity
  • P (presenter)——呈现层——业务逻辑/连接M&V——接口
                 需修改的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

  • M(Model) ——模型层——业务逻辑/数据储存——外观类/接口访问
  • V (View) ——视图层——View绘制/用户交互——XML/Activity
  • VM(ViewMode)——View的数据模型和Presenter的结合体
                 修改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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容