iOS 架构模式-MVVM

MVVM
Model-View-ViewModel
MVVM 其实是MVC的进化版,他将业务逻辑从VC中解耦到ViewModel,实现VC的瘦身。

做一个简单的登录判断:

创建LoginViewModel(逻辑处理),LoginModel(只放数据),LoginViewController。 这里不用LoginView是为了能更好的把精力集中在用ViewModel解耦上。

在LoginModel中加入方法

//.h

  • (instancetype)initWithUserName:(NSString )username password:(NSString )password;

@property (nonatomic,copy,readonly)NSString * username;
@property (nonatomic,copy,readonly)NSString * password;
//.m

  • (instancetype)initWithUserName:(NSString )username password:(NSString )password {
    if (self = [super init]) {
    _username = username;
    _password = password;
    }
    return self;
    }
    在LoginViewModel中加入方法

//.h
import "PersonModel.h"

  • (instancetype)initWithPerson:(PersonModel *)person;
    @property (nonatomic,assign,readonly)BOOL canLogin;

//.m

  • (instancetype)initWithPerson:(PersonModel *)person {
    if (self = [super init]) {
    //在这做你绑定model后的处理
    _canLogin = [self valiCanLoginWithUserName:person.username password:person.password];
    }
    return self;
    }

  • (BOOL)valiCanLoginWithUserName:(NSString )username password:(NSString )password {
    if (username.length & password.length) {
    return YES;
    } else {
    return NO;
    }
    }
    然后VC(或者View)就可以直接这样获得判断后的结果

PersonModel * person = [[PersonModel alloc]initWithUserName:@"10" password:@"10"];
PersonViewModel * viewModel = [[PersonViewModel alloc]initWithPerson:person];
NSLog(@"%d",viewModel.canLogin);
简单的功能的时候没什么,当你处理复杂的逻辑判断的时候,MVVM会有巨大优势。

转载于:https://www.cnblogs.com/PSSSCode/p/5453106.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值