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的文件大小,不至于他们逻辑过于复杂和庞大。


目录
相关文章
|
6月前
|
前端开发 数据安全/隐私保护
什么是mvvm,mvp、mvc和mvvm模式有什么区别?
什么是mvvm,mvp、mvc和mvvm模式有什么区别?
124 0
|
6月前
|
前端开发
什么是MVVM架构?
MVVM是Model-View-ViewModel的简写。它本质上就是MVC的改进版。MVVM模式有助于将应用程序的业务和表示逻辑与用户界面 (UI) 清晰分离。 保持应用程序逻辑和UI之间的清晰分离有助于解决许多开发问题,并使应用程序更易于测试、维护和演变。 它还可以显著提高代码重用机会,并允许开发人员和UI设计人员在开发应用各自的部分时更轻松地进行协作。
90 2
|
5月前
|
设计模式 前端开发 JavaScript
简述mvvm模式
简述mvvm模式
|
6月前
|
前端开发 JavaScript
mvvm实例
mvvm实例
41 0
|
6月前
|
存储 前端开发 JavaScript
什么是MVVM?MVC、MVP与MVVM模式的区别?
什么是MVVM?MVC、MVP与MVVM模式的区别?
|
6月前
|
存储 开发框架 前端开发
MVVM 模式与 MVC 模式:构建高效应用的选择
MVVM 模式与 MVC 模式:构建高效应用的选择
MVVM 模式与 MVC 模式:构建高效应用的选择
|
6月前
|
前端开发 JavaScript 架构师
什么是 MVVM?
什么是 MVVM?
56 0
|
6月前
|
设计模式 前端开发 测试技术
什么是mvvm模式,优点是什么
什么是mvvm模式,优点是什么
146 0
|
前端开发 JavaScript
mvvm模式
mvvm模式
61 0
|
JavaScript 前端开发 容器
实现一个自己的MVVM(一)
实现一个自己的MVVM
67 0