ReactiveCocoa 之 MVVM 模式

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和viewModel

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    @implementation FKYLoginViewController
    // 初始化
    - (instancetype)init
    - (void)loadView
    // 绑定 ViewModel 和 View
    - (void)bindViewModel
    // 创建View
    - (void)setupUI
    @end
  • viewModel 业务逻辑处理,事件处理(数据和网络剥离到service)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    @implementation FKYLoginViewModel
    - (instancetype)init {
    if (self = [super init]) {
    [self initialize];
    }
    return self;
    }
    // 初始化事件,绑定事件的处理
    - (void)initialize
    // 登录API
    - (void)loginVithUsername:(NSString *)username
    password:(NSString *)password
    complete:(void(^)(bool success, NSError *error))completeBlock {
    return [self.service loginAppWithUserName:username
    andPassword:password
    success:^{
    completeBlock(YES,nil);
    } failure:^(NSString *reason) {
    NSError *error = [NSError errorWithDomain:reason code:0 userInfo:nil];
    completeBlock(NO,error);
    }];
    }
    @end
  • model 与之前model 同.

2, 参考阅读

ReactiveCocoa 和 MVVM 入门

Model-View-ViewModel for iOS