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中加入方法

//.himport "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会有巨大优势。

时间: 2024-11-04 16:07:07

iOS 架构模式的相关文章

iOS架构模式--解密 MVC,MVP,MVVM以及VIPER架构

在 iOS 中使用 MVC 架构感觉很奇怪? 迁移到MVVM架构又怀有疑虑?听说过 VIPER 又不确定是否真的值得切换? 相信你会找到以上问题的答案,如果没找到请在评论中指出. 你将要整理出你在 iOS 环境下所有关于架构模式的知识.我们将带领大家简要的回顾一些流行的架构,并且在理论和实践上对它们进行比较,通过一些小的例子深化你的认知.如果对文中提到的一些关键词有兴趣,可以点击连接去查看更详细的内容. 掌控设计模式可能会使人上瘾,所以要当心,你可能会对一些问题清晰明了,不再像阅读之前那样迷惑,

iOS - 架构模式 - 解密 MVC、MVP、MVVM、VIPER架构

在 iOS 中使用 MVC 架构感觉很奇怪? 迁移到MVVM架构又怀有疑虑?听说过 VIPER 又不确定是否真的值得切换? 相信你会找到以上问题的答案,如果没找到请在评论中指出. 你将要整理出你在 iOS 环境下所有关于架构模式的知识.我们将带领大家简要的回顾一些流行的架构,并且在理论和实践上对它们进行比较,通过一些小的例子深化你的认知.如果对文中提到的一些关键词有兴趣,可以点击连接去查看更详细的内容. 掌控设计模式可能会使人上瘾,所以要当心,你可能会对一些问题清晰明了,不再像阅读之前那样迷惑,

iOS 架构模式--解密 MVC,MVP,MVVM以及VIPER架构

在 iOS 中使用 MVC 架构感觉很奇怪? 迁移到MVVM架构又怀有疑虑?听说过 VIPER 又不确定是否真的值得切换? 相信你会找到以上问题的答案,如果没找到请在评论中指出. 你将要整理出你在 iOS 环境下所有关于架构模式的知识.我们将带领大家简要的回顾一些流行的架构,并且在理论和实践上对它们进行比较,通过一些小的例子深化你的认知.如果对文中提到的一些关键词有兴趣,可以点击连接去查看更详细的内容. 掌控设计模式可能会使人上瘾,所以要当心,你可能会对一些问题清晰明了,不再像阅读之前那样迷惑,

iOS 架构模式MVVM

MVVM Model-View-ViewModelMVVM 其实是MVC的进化版,他将业务逻辑从VC中解耦到ViewModel,实现VC的瘦身. 做一个简单的登录判断: 创建LoginViewModel(逻辑处理),LoginModel(只放数据),LoginViewController. 这里不用LoginView是为了能更好的把精力集中在用ViewModel解耦上. 在LoginModel中加入方法 //.h - (instancetype)initWithUserName:(NSStrin

架构模式

iOS 架构模式--解密 MVC,MVP,MVVM以及VIPER架构 - CocoaChina_让移动开发更简单 skyming_Trip-to-iOS-Design-Patterns_ iOS 设计模式相关资料整理 原文地址:https://www.cnblogs.com/louyizhidu/p/9246708.html

《iOS「通告机制」及由其引出的对「架构模式」、「设计模式」的理解

说明:为了区别「本地通知」与「推送通知」这两种iOS中提醒用户,可见的「通知」,本文所将Notification翻译为「通告」.它们的详细区别,可参考<iOS开发系列--通知与消息机制>一文. 实践遇到的问题: 最近在维护公司的一个项目中,遇到这样一个报错:-[GlobalManager addAlbum:]: unrecognized selector sent to instance 经排查,原因如下:以前同事在利用「通告机制」在GlobalManager类中把「自己/self」注册为「观

iOS软件架构——架构模式(Architectural Pattern)

一个架构模式描述软件系统里的基本的结构组织或纲要.架构模式提供一些事先定义好的子系统,指定它们的责任,并给出把它们组织在一起的法则和指南.有些作者把这种架构模式叫做系统模式[STELTING02]. 例:一个架构模式常常可以分解成很多个设计模式的联合使用.显然,MVC模式就是属于这一种模式.MVC模式常常包括调停者(Mediator)模式.策略(Strategy)模式.合成(Composite)模式.观察者(Observer)模式等. 常见设计模式:工厂方法(Factory Method)模式.

FFmpeg for ios架构:中级

FFmpeg这部分想了非常久,也没找到比較好的解说方式.本来想像其他博客一样.对着代码一行行的分析.但后来感觉不太现实,FFmpeg应用在IOS上怎么说代码最少也有个5.6k行(包含音视频.业务逻辑),再加上由于小弟也要上班养家.所以没这么多时间写的非常具体,仅仅能做一个随笔.简而化之的就整个架构描写叙述描写叙述.只是全部这些提到的地方都是使用的核心难点.不清楚地方还请大家多多包涵,请勿拍砖.呵呵 另外除了这篇还准备写一篇FFmpeg for ios架构:高级篇.请大家多多关注. 整个代码 分为

高可用&amp;负载均衡架构模式

下面总结一下常见的高可用和负载均衡架构模式. 1. 客户端切换. 客户端配置多个服务器地址.如果发生某个服务器无法访问或者使用异常,客户端就切换到其它服务器上. 优点:简单,高效,可以在业务层面检测服务可用性 缺点:需要提前配置. Mysql connect 这样做load balance 和failed over .在JDBC连接上可以配置多个服务器. http://dev.mysql.com/doc/connector-j/en/connector-j-reference-configura