IOS - MVVM + ReactiveCocoa

2020-06-08  本文已影响0人  赵_df7e

基础:

RACCommand的详细讲解

MVVM架构已经耳熟能详,网上有非常多的文章,讲的都相当不错,MVVM最主要的关系我这里要提醒一下

最基本的规则:

1.View持有ViewModel 反之不持有

2.ViewModel持有Model 反之不持有

网上copy了一张关系图

MVVM 的基本概念

在MVVM 中,view 和 view controller正式联系在一起,我们把它们视为一个组件

view 和 view controller 都不能直接引用model,而是引用视图模型(viewModel)

viewModel 是一个放置用户输入验证逻辑,视图显示逻辑,发起网络请求和其他代码的地方

使用MVVM会轻微的增加代码量,但总体上减少了代码的复杂性

MVVM 的注意事项

view 引用viewModel ,但反过来不行(即不要在viewModel中引入#import UIKit.h,任何视图本身的引用都不应该放在viewModel中)(PS:基本要求,必须满足)

viewModel 引用model,但反过来不行

MVVM 的使用建议

MVVM 可以兼容你当下使用的MVC架构。

MVVM 增加你的应用的可测试性。

MVVM 配合一个绑定机制效果最好(PS:ReactiveCocoa你值得拥有)。

viewController 尽量不涉及业务逻辑,让 viewModel 去做这些事情。

viewController 只是一个中间人,接收 view 的事件、调用 viewModel 的方法、响应 viewModel 的变化。

viewModel 绝对不能包含视图 view(UIKit.h),不然就跟 view 产生了耦合,不方便复用和测试。

viewModel之间可以有依赖。

viewModel避免过于臃肿,否则重蹈Controller的覆辙,变得难以维护。

MVVM 的优势

低耦合:View 可以独立于Model变化和修改,一个 viewModel 可以绑定到不同的 View 上

可重用性:可以把一些视图逻辑放在一个 viewModel里面,让很多 view 重用这段视图逻辑

独立开发:开发人员可以专注于业务逻辑和数据的开发 viewModel,设计人员可以专注于页面设计

可测试:通常界面是比较难于测试的,而 MVVM 模式可以针对 viewModel来进行测试

MVVM 的弊端

数据绑定使得Bug 很难被调试。你看到界面异常了,有可能是你 View 的代码有 Bug,也可能是 Model 的代码有问题。数据绑定使得一个位置的 Bug 被快速传递到别的位置,要定位原始出问题的地方就变得不那么容易了。

上一篇 下一篇

猜你喜欢

热点阅读