zoukankan      html  css  js  c++  java
  • 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会有巨大优势。

  • 相关阅读:
    JAVA 正则表达式 (超详细)
    Windows命令-route
    Spring3 MVC请求参数获取的几种方法[转]
    Linux-支持中文
    Linux-Tmux使用初体验
    Linux命令-工作管理命令:&,ctrl+z,jobs,fg,bg
    Linux命令-服务管理命令:chkconfig
    Linux命令-文件系统常用命令:df,du,fsck,dumpe2fs
    Linux命令-用户管理:useradd,userdel,usermod,id,su,env,exit
    Linux命令-某个用户组下面的所有用户
  • 原文地址:https://www.cnblogs.com/hlgbys/p/5497201.html
Copyright © 2011-2022 走看看