区块链技术博客
www.b2bchain.cn

大厂这么做iOS(9):架构之必谈的MVVM求职学习资料

本文介绍了大厂这么做iOS(9):架构之必谈的MVVM求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

谈到 iOS 架构,必谈 MVVM,因此我们架构的第一篇就献给 MVVM。

背景

MVVM,即 Model-View-ViewModel,他一直认为是 MVC(Model-View-Controller) 的改进,我们先看下 MVC 的图解:

大厂这么做iOS(9):架构之必谈的MVVM

斯坦福大学公开课说的MVC

图中很好的阐释了 M、V、C 之间的关系:这三者中 C 是主角,它来管理 M 以及 V,这是 V 臃肿的原因,因为他担负了太多的功能。
MVVM 中,我们弱化了 C,C 在一定程度上就是做了 View 的包装,也就是另一种形式的 V,另一方面,主角变成了 ViewModel,他和 View 一一对应,帮我们处理逻辑问题。
至此,MVVM 的概念讲述完毕。

开始

本系列专栏的目标不是做知识普及,而是讲述各种概念在大厂中的应用,但尽管这样,我希望大家能了解到,一个 MVVM 组件库是怎么样产生的,即其设计的原因,当然,还需要解决的一系列问题。
我不想一开始就丢给大家一个设计好的 MVVM 库,而是大家可以思考一下,一个 MVVM 库应该具备哪些功能?由于 M(Mdel)、V(View)的功能我们已经清楚了,关键是VM(ViewModel)。

ViewModel 做 网络请求

ViewModel 是为了解决 Controller 过于臃肿而提出的改进方案,MVC 中逻辑处理、UI 堆叠是臃肿的原因,因此我们要做的,是把逻辑部分抽离到 ViewModel 中,我们先剥离网络请求的逻辑。比如:

大厂这么做iOS(9):架构之必谈的MVVM

ViewController 既当爹又当妈

ViewCtroller 当 ViewDidLoad 的时候请求网络,再刷新页面,这里面的逻辑代码不少,我们改进下:

大厂这么做iOS(9):架构之必谈的MVVM

网络请求交给 ViewModel

ViewModel 处理 UIControl 事件

我们正常处理 UIButton 的代码是这样的:

“`

  • (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    [self.button addTarget:self action:@selector(buttonDidClicked:) forControlEvents:UIControlEventTouchUpInside];
    }

-(void) buttonDidClicked:(UIButton *) button {

}

谈到 iOS 架构,必谈 MVVM,因此我们架构的第一篇就献给 MVVM。

背景

MVVM,即 Model-View-ViewModel,他一直认为是 MVC(Model-View-Controller) 的改进,我们先看下 MVC 的图解:

大厂这么做iOS(9):架构之必谈的MVVM

斯坦福大学公开课说的MVC

图中很好的阐释了 M、V、C 之间的关系:这三者中 C 是主角,它来管理 M 以及 V,这是 V 臃肿的原因,因为他担负了太多的功能。
MVVM 中,我们弱化了 C,C 在一定程度上就是做了 View 的包装,也就是另一种形式的 V,另一方面,主角变成了 ViewModel,他和 View 一一对应,帮我们处理逻辑问题。
至此,MVVM 的概念讲述完毕。

开始

本系列专栏的目标不是做知识普及,而是讲述各种概念在大厂中的应用,但尽管这样,我希望大家能了解到,一个 MVVM 组件库是怎么样产生的,即其设计的原因,当然,还需要解决的一系列问题。
我不想一开始就丢给大家一个设计好的 MVVM 库,而是大家可以思考一下,一个 MVVM 库应该具备哪些功能?由于 M(Mdel)、V(View)的功能我们已经清楚了,关键是VM(ViewModel)。

ViewModel 做 网络请求

ViewModel 是为了解决 Controller 过于臃肿而提出的改进方案,MVC 中逻辑处理、UI 堆叠是臃肿的原因,因此我们要做的,是把逻辑部分抽离到 ViewModel 中,我们先剥离网络请求的逻辑。比如:

大厂这么做iOS(9):架构之必谈的MVVM

ViewController 既当爹又当妈

ViewCtroller 当 ViewDidLoad 的时候请求网络,再刷新页面,这里面的逻辑代码不少,我们改进下:

大厂这么做iOS(9):架构之必谈的MVVM

网络请求交给 ViewModel

ViewModel 处理 UIControl 事件

我们正常处理 UIButton 的代码是这样的:

“`

  • (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    [self.button addTarget:self action:@selector(buttonDidClicked:) forControlEvents:UIControlEventTouchUpInside];
    }

-(void) buttonDidClicked:(UIButton *) button {

}

谈到 iOS 架构,必谈 MVVM,因此我们架构的第一篇就献给 MVVM。

背景

MVVM,即 Model-View-ViewModel,他一直认为是 MVC(Model-View-Controller) 的改进,我们先看下 MVC 的图解:

大厂这么做iOS(9):架构之必谈的MVVM

斯坦福大学公开课说的MVC

图中很好的阐释了 M、V、C 之间的关系:这三者中 C 是主角,它来管理 M 以及 V,这是 V 臃肿的原因,因为他担负了太多的功能。
MVVM 中,我们弱化了 C,C 在一定程度上就是做了 View 的包装,也就是另一种形式的 V,另一方面,主角变成了 ViewModel,他和 View 一一对应,帮我们处理逻辑问题。
至此,MVVM 的概念讲述完毕。

开始

本系列专栏的目标不是做知识普及,而是讲述各种概念在大厂中的应用,但尽管这样,我希望大家能了解到,一个 MVVM 组件库是怎么样产生的,即其设计的原因,当然,还需要解决的一系列问题。
我不想一开始就丢给大家一个设计好的 MVVM 库,而是大家可以思考一下,一个 MVVM 库应该具备哪些功能?由于 M(Mdel)、V(View)的功能我们已经清楚了,关键是VM(ViewModel)。

ViewModel 做 网络请求

ViewModel 是为了解决 Controller 过于臃肿而提出的改进方案,MVC 中逻辑处理、UI 堆叠是臃肿的原因,因此我们要做的,是把逻辑部分抽离到 ViewModel 中,我们先剥离网络请求的逻辑。比如:

大厂这么做iOS(9):架构之必谈的MVVM

ViewController 既当爹又当妈

ViewCtroller 当 ViewDidLoad 的时候请求网络,再刷新页面,这里面的逻辑代码不少,我们改进下:

大厂这么做iOS(9):架构之必谈的MVVM

网络请求交给 ViewModel

ViewModel 处理 UIControl 事件

我们正常处理 UIButton 的代码是这样的:

“`

  • (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    [self.button addTarget:self action:@selector(buttonDidClicked:) forControlEvents:UIControlEventTouchUpInside];
    }

-(void) buttonDidClicked:(UIButton *) button {

}

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 大厂这么做iOS(9):架构之必谈的MVVM求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们