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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MVVM(Model-View-ViewModel)是一种软件设计模式,常用于开发用户界面。它的优点和缺点如下: 优点: 1. 分离关注点:MVVM将应用程序的逻辑、数据和视图分离开来,使得代码更加清晰和可维护。模型(Model)负责处理数据和业务逻辑,视图(View)负责展示数据和用户交互,而视图模型(ViewModel)则充当模型和视图之间的桥梁。 2. 可测试性:MVVM通过将视图逻辑从视图中抽离出来,使得视图可以更容易地进行单元测试。视图模型可以通过数据绑定来模拟和验证视图的行为,从而提高代码的可测试性。 3. 可复用性:MVVM鼓励重用已有的视图和视图模型,通过数据绑定和命令绑定实现视图和视图模型之间的解耦。这样一来,我们可以在不修改已有代码的情况下,将不同的视图与不同的视图模型进行组合,从而实现高度可复用的界面组件。 4. 前后端分离:MVVM支持前后端分离开发模式,使前端开发人员专注于界面逻辑的实现后端开发人员专注于数据处理和业务逻辑的实现,从而提高开发效率。 缺点: 1. 学习曲线:相较于传统的MVC模式MVVM模式需要开发人员掌握更多的概念和技术,如数据绑定、命令绑定等。因此,对于初学者来说,学习和理解MVVM可能需要一定的时间和精力。 2. 过度设计:在某些场景下,MVVM模式可能会导致过度设计。因为视图模型和视图之间的解耦有时候会引入额外的复杂性,特别是对于简单的界面来说,采用MVVM模式可能显得过于繁琐。 3. 数据绑定性能:MVVM依赖于数据绑定机制来实现视图与视图模型之间的数据同步。在一些性能要求较高的场景下,由于数据绑定机制的实现机制,可能会对应用程序的性能产生一定的影响。 需要注意的是,MVVM并不适用于所有的开发场景,开发人员需要根据具体情况选择合适的设计模式

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值