MVVM模式的具体实现

简介: MVVM模式的具体实现

MVVM即Model-View-ViewModel的简写。即模型-视图-视图模型。

模型(Model)指的是后端传递的数据。

视图(View)指的是所看到的页面。

视图模型(ViewModel)是mvvm模式的核心,它是连接view和model的桥梁。

它有两个方向:

一是将视图(View)转化成模型(Model),即将所看到的页面转化成后端的数据。实现的方式是:View事件监听把具体参数更新到一个整体模型中并通过rac传递给ViewMode,实现View和ViewModel共享一个整体数据对象,来达到数据绑定,然后ViewModel向后端请求数据。

二是将模型(Model)转化成视图(View),即将后端传递的数据转化成所看到的页面。实现的方式是:对象解析和通过请求响应来触发更新UI。这两个方向都实现的,我们称之为数据的双向绑定。


MVC是Model-View- Controller的简写。即模型-视图-控制器。

M和V指的意思和MVVM中的M和V意思一样。

C即Controller指的是页面业务逻辑。

使用MVC的目的就是将M和V的代码分离。

MVC是单向通信。也就是View跟Model,必须通过Controller来承上启下。

MVC和MVVM的区别并不是VM完全取代了C,只

是在MVC的基础上增加了一层VM,弱化了C的概念,ViewModel存在目的在于抽离Controller中展示的业务逻辑,而不是替代Controller,其它视图操作业务(如常用的表格和不同视图的交互)等还是应该放在Controller中实现。也就是说MVVM实现的是业务逻辑组件的重用,

使开发更高效,结构更清晰,增加代码的复用性。


下面是我们的MVVM实现:

苹果MVVM架构:

1.页面(基于PPRootViewController的页面,PPRootViewController是UIViewController的子类,PPRootViewController封装了失败UI和无数据UI。包含系统控件)

2.UI控件View(添加的显示元素,包含系统控件或其它View,一般通过setModel来直接展示数据,也可根据数据来实现部分页面逻辑);

3.ViewModel(请求参数校验,业务相关响应参数的对象转换,数据处理和部分业务逻辑);

4.中间件(类似后台网关的组件,处理参数统一添加,消息头填充,可配置的显示和取消蒙层,可配置的错误弹窗显示,token失效跳转登录页面,添加签名,区分get请求和post请求,网络请求地址和参数拼接,响应消息解密与封装成成功处理和失败处理);

5.网络请求组件(AFNetworking,处理和后台交互,超时处理,无网络处理)

一个请求相关流程:1->2>3->4->5或2->3->4->5

是否MVVM架构主要看是是否抽象出ViewModel,和是否使用网络中间间无关,也不是看是否使用Reactive。我目前看到的MVVM都是用Reactive(RAC),不知道是否有其它不使用Reactive(RAC)实现了MVVM,理论是可以的。我也见过使用Reactive(RAC)不是采用MVVM的项目。一般拆分的越细开发越慢,它的好处不是提升了开发速度,而是提高了代码的清晰性,更便于维护,更方便实现ViewModel,View,Controller的文件大小,不至于他们逻辑过于复杂和庞大。


目录
相关文章
|
前端开发 数据安全/隐私保护
什么是mvvm,mvp、mvc和mvvm模式有什么区别?
什么是mvvm,mvp、mvc和mvvm模式有什么区别?
555 0
|
NoSQL Java Redis
分布式锁框架Lock4j简单使用
最近项目中使用到了Lock4j的分布式锁组件,小编今天就带大家学习一下该框架,以及如何在我们项目中进行集成使用。
|
7月前
|
边缘计算 资源调度 算法
MATLAB中实现Canny边缘检测
在MATLAB中实现Canny边缘检测,既可以直接使用内置函数,也可以自己编写代码分步实现以加深理解。
|
5月前
|
搜索推荐 BI API
拼多多API应用场景大揭秘,让你的店铺玩法多样!
本文介绍拼多多开放平台API在电商运营中的五大核心应用场景:商品高效管理、订单自动化处理、精准营销、数据驱动决策及个性化客户服务。通过技术集成,助力商家实现降本增效、智能运营,提升市场竞争力。(238字)
514 0
|
人工智能 Java 程序员
一文彻底搞明白PCB加工工艺
PCB加工工艺简介:从覆铜板开始,经过设计、钻孔、显影、蚀刻、阻焊涂层、保留焊盘、丝印等步骤,最终制成电路板。覆铜板由铜箔和绝缘基材组成,设计阶段使用EDA软件完成布线图。钻孔后,通过显影将防腐材料印刷在板上,蚀刻去除多余铜层,形成导电路径。阻焊涂层保护铜线,防止老化和短路。保留焊盘确保电子元件可焊接,丝印则添加标识符号简化焊接与维修。可选镀金处理提高抗氧化性和电气稳定性,广泛应用于高性能设备的接口。
718 0
|
网络协议 算法 开发者
如何实现网络同步?
【5月更文挑战第3天】如何实现网络同步?
630 9
|
存储 数据处理 图形学
什么是帧同步技术?
【5月更文挑战第3天】什么是帧同步技术?
1037 9
|
SQL 数据库 存储
SQL SERVER数据库删除LOG文件和清空日志的方案
原文:SQL SERVER数据库删除LOG文件和清空日志的方案 数据库在使用过程中会使日志文件不断增加,使得数据库的性能下降,并且占用大量的磁盘空间。SQL Server数据库都有log文件,log文件记录用户对数据库修改的操作。
10394 0
|
传感器 内存技术
毕业设计 江科大STM32的智能温室控制蓝牙声光报警APP系统设计
毕业设计 江科大STM32的智能温室控制蓝牙声光报警APP系统设计
674 0
|
编解码 网络协议 应用服务中间件
公网可用的RTMP、RTSP测试地址
好多博客提到的公网可测试的RTSP和RTMP URL大多都不用了,以下是大牛直播SDK(Github)于2021年3月亲测可用的几个URL,有其他可用的URL,也欢迎大家在评论区回复。
26908 0