iOS 架构模式

Posted 吴雨欣

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS 架构模式相关的知识,希望对你有一定的参考价值。

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会有巨大优势。







以上是关于iOS 架构模式的主要内容,如果未能解决你的问题,请参考以下文章

架构师内功心法,只是单纯听说过的原型模式详解

架构师内功心法,只是单纯听说过的原型模式详解

iOS架构补完计划--浅谈架构模式(MVC/MVVM)

构建应用程序架构(活动和片段)的最佳方式是啥

将数据从底部工作表对话框片段传递到片段

将 graphQL 片段添加到模式中,并且可用于所有查询