ReactiveCocoa 之 MVVM 模式
1,简介
模型(M):保存视图数据。
视图+控制器(V):包含View和Controller, view用于展示内容 controller 用于绑定View和ViewModel
视图模型(VM):处理展示的业务逻辑,包括按钮的点击,数据的请求和解析等等(网络和数据处理也可单独另开一个service层来处理)。
MVC ,MVCS ,MVVM 简单比较
mvcs 较mvc 将网络和数据从controller里剥离.
mvvm 较mvc 将事件的处理也从controller里面剥离出来
共同的作用都是让controller 瘦身.解耦.
2,MVVM下的登录页面
Controller
只做两件事,布局UI视图,绑定view和viewModel123456789101112131415@implementation FKYLoginViewController// 初始化- (instancetype)init- (void)loadView// 绑定 ViewModel 和 View- (void)bindViewModel// 创建View- (void)setupUI@end
viewModel
业务逻辑处理,事件处理(数据和网络剥离到service)123456789101112131415161718192021222324252627@implementation FKYLoginViewModel- (instancetype)init {if (self = [super init]) {[self initialize];}return self;}// 初始化事件,绑定事件的处理- (void)initialize// 登录API- (void)loginVithUsername:(NSString *)usernamepassword:(NSString *)passwordcomplete:(void(^)(bool success, NSError *error))completeBlock {return [self.service loginAppWithUserName:usernameandPassword:passwordsuccess:^{completeBlock(YES,nil);} failure:^(NSString *reason) {NSError *error = [NSError errorWithDomain:reason code:0 userInfo:nil];completeBlock(NO,error);}];}@end
model
与之前model 同.