博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVVM 框架简介
阅读量:4296 次
发布时间:2019-05-27

本文共 1409 字,大约阅读时间需要 4 分钟。

MVVM 在 iOS 中的应用

MVVM(Model View ViewModel)是基于 MVC(Model View Controller)和 MVP(Model View Presenter)发展起来的一种新的软件设计框架,并且其包含有 WPF 的特性。

WPF(Windows Presentation Foundation)是微软在 .NET Framework 3.0 开始推出的基于 Windows 的用户界面框架。

随着客户需求的日益繁杂,以及越来越重要的用户体验,都促使着视图设计工作与业务处理工作的分离。当两者分离后,视图的变化不再影响数据模型,而数据模型的变化也不影响视图,只要两者暴露出来的接口能够相互对应。在 ViewModel 中,根据两者对应的接口,将视图和数据相互绑定,以达到视图和数据的同步变化。

MVC

在 iOS 应用开发中,常用的框架设计模式为 MVC 模式(参见下图),控制器负责协调数据模型与视图之间的交互,除此之外,控制器还需要处理如场景转换、内存警告、键盘弹出等系统事件以及其他用户自定义的事件,所有的这些都放在控制器中,如 UITableview 的代理通常是控制器,而其中的 UITableviewCell 一般也设置控制器作为其代理,这些都造成了控制器中的代码臃肿,不利于程序的维护和扩展。

在这里插入图片描述

MVVM

MVVM 框架的关键在于将视图和数据模型之间的交互从其他事物剥离出来,单独作为一个模块。在 iOS 中,即将有关视图的变换从控制器中分离出来,这样,不仅避免了控制器代码量的过度膨胀,而且利于视图逻辑的修改。另外,可以预见的是,这种将视图与数据模型的绑定、变更操作统一到 ViewModel 中的设计方式,可以提高视图和数据模型的复用率。

在这里插入图片描述

MVVM 实例

这里给出一个 MVVM 架构设计的实例,目录结构如下图所示:

在这里插入图片描述
在这个例子中,自定义了一个 UIView 的子视图 PersonInfoView 用来保存并显示人员信息,与该视图相关的操作都封装在了 ViewModel 类中,其中包含数据的保存和读取。而这种方式,给控制器 ViewController 带来的影响是非常明显的,如下,其代码十分精简。

#import "ViewController.h"#import "ViewModel.h"@interface ViewController ()@property (strong, nonatomic) ViewModel *viewModel;@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];        self.viewModel = [[ViewModel alloc]init];    [self.view addSubview:self.viewModel.personView];}@end

数据模型在 Model 文件夹下,自定义视图在 View 文件夹下,视图模型在 ViewModel 文件夹下,合理的项目结构有利于项目的理解和维护。

需要注意的是,这只是一个简单的例子,使用 MVVM 架构并不比 MVC 架构方便多少,在实际工程应用中,需要根据实际情况来选择合适的架构。

该例子的效果图如下,感兴趣的可以。

在这里插入图片描述

参考:

转载地址:http://oxdws.baihongyu.com/

你可能感兴趣的文章
回测引擎代码分析流程图
查看>>
Excel 如何制作时间轴
查看>>
股票网格交易策略
查看>>
matplotlib绘图跳过时间段的处理方案
查看>>
vnpy学习_04回测评价指标的缺陷
查看>>
ubuntu终端一次多条命令方法和区别
查看>>
python之偏函数
查看>>
vnpy学习_06回测结果可视化改进
查看>>
读书笔记_量化交易如何建立自己的算法交易01
查看>>
设计模式03_工厂
查看>>
设计模式04_抽象工厂
查看>>
设计模式05_单例
查看>>
设计模式06_原型
查看>>
设计模式07_建造者
查看>>
设计模式08_适配器
查看>>
设计模式09_代理模式
查看>>
设计模式10_桥接
查看>>
设计模式11_装饰器
查看>>
设计模式12_外观模式
查看>>
设计模式13_享元模式
查看>>