美文网首页
学习笔记:移动端常见的架构模式

学习笔记:移动端常见的架构模式

作者: 双鱼子曰1987 | 来源:发表于2021-06-04 10:35 被阅读0次

一、概述

架构模式的目的是为企业赋能,提高需求响应速度、系统稳定等,进而提高产研的工作效率。

二、常见的架构模式

1、MVC(Model-View-Controller)

简单理解,Controller拥有ViewModel对象,两者通过Controller进⾏行行沟通,ViewModel可以进行通信。
Controller 控制器层,负责业务逻辑、页面跳转、网络请求、数据库操作等。
View 显示层,负责页面的创建布局 和 用户交互响应逻辑。
Model 数据层,数据属性字段 和 数据转化等简单处理。

image.png

由上各个层的职责可知,Controller负责的逻辑太多了,在加上实际开发中,会把很多页面和数据逻辑都放在Controller中,就出现胖Controller。也就是这个原因,MVC也被称为 Massive View Controller(重量级视图控制器)

2、MVP(Model-View-Presenter)

简单理解,Model提供数据,View负责显示,Presenter负责逻辑的处理。

CA72D493-123C-4820-B80A-2681654078FF.png
  • MVPMVC的区别在于:ViewModel 能否直接通信。

从上面定义中,发现将Presenter -> Controller,就是MVC模式。
那么,它和MVC模式有何不同呢?

MVP模式可以说对MVC模式进一步设计约束,即严格MVC模式。

MVPView并不直接使用Model,它们之间的通信是通过Presenter(MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVCView会直接从Model中读取数据而不是通过Controller

image.png

3、MVVM(Model - View - ViewModel)

简单理解,ModelView的职责基本同MVC一致。
模式核心是引入ViewModel层,主要职责是网络请求、数据转化、数据库处理等逻辑,同时双向绑定 ModelView ,推荐 一个页面模块 对应 一个ViewModel。
例如,可以把UITableView的DataSource和Delegate放到ViewModel中。

image.png
  • 注意:关于双向绑定可以通过block、delegate、notification、KVO等系统技术。或者使用RAC等响应式编程,不过其维护成本和Debug成本让人头大。目前业界也并没有什么好的MVVM框架开源出来。

  • 注意:iOS的默认是MVC模式,因此必然会存在Controller,网上很多将 ViewController 合并划入 MVVMView层。

    image.png

MVVM的进一步演化

个人推荐:Controller不应该当做MVVMView层,应该进一步的剥离,实现 数据驱动 模式架构。
而是居中角色,负责ViewModel生命周期、ViewModel间通信、页面跳转等,也可以把这些逻辑进一步的剥离到另外一层,可以叫做LogicLayer中,进一步的解耦。

注意:解耦越彻底,代码量越是增加,因此架构讲究的是动态平衡。

4、VIPER(View - Interactor - Presenter - Entities - Router)

简单理解,VIPER分为五个层次,如下
View 负责页面搭建和布局。
Interactor 负责数据实体、网络、数据库等相关业务逻辑,可以理解为业务交互器。
Presenter 负责包括 UI相关的业务逻辑,如页面事件响应,动画等。
Entities 数据实体,相当于Model
Router 负责 VIPER 模块之间的转场。

image.png

注意:VIPER架构是可以用于整个App的整体架构的,不仅仅是MVC等模式应用场景。

VIPER划分的太过于细致,解耦程度最高,可以做到测试驱动开发模型;但也有代码太多,太多过于繁琐,因此在移动端页面端架构中不大好推广,但是在整个App的架构设计上,很多也是值得借鉴的。

Architecting iOS Apps with VIPER

三、最后

架构从哪里入手呢?思考整理中,下一篇文章进行分享~

相关文章

  • 学习笔记:移动端常见的架构模式

    一、概述 架构模式的目的是为企业赋能,提高需求响应速度、系统稳定等,进而提高产研的工作效率。 二、常见的架构模式 ...

  • Android架构浅谈

    面试中常常会问到对于移动端架构的理解,在Android中,常见有MVC、MVP、MVVM、MVI这几种架构模式,知...

  • iOS 移动端架构初探心得

    iOS 移动端架构初探心得 iOS 移动端架构初探心得

  • 一、移动页面开发

    《指尖上行——移动前端开发进阶之路》学习笔记 第一章:介绍移动端页面的布局方式和技巧、页面调试方法,以及常见的移动...

  • 《移动端设计模式》学习笔记

    这里总结了8种常见设计模式:导航、表格、搜索、表单、工具、引导、操作、反馈。 1、导航 1.1、标签导航 iOS系...

  • iOS 架构模式学习笔记

    iOS 架构模式学习笔记 设计模式 设计模式 和 编码技巧 、架构模式的区别: 设计模式:特定场景下的最佳实践 如...

  • 移动应用架构初探

    动机 移动端应用随着硬件和平台能力提升, 有了日趋复杂的趋势. 而移动端的架构演化也将 影响移动端架构的一些要素有...

  • 移动端测试与Web测试区别

    移动端主要基于C/S架构,Web端主要基于B/S架构。 1、在性能方面,移动端要关注CPU消耗(空闲状态、中等规格...

  • ios - 收藏集 - 掘金

    天弘基金移动 App 客户端架构优化之路 - iOS - 掘金天弘基金移动App客户端架构优化之路 随着移动互联网...

  • 诊断系统Linux Server端架构验证--Apple的学习笔

    诊断系统python Client端架构验证--Apple的学习笔记昨天python client端的框架雏形进行...

网友评论

      本文标题:学习笔记:移动端常见的架构模式

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