MVC、MVP、MVVM

看了一堆MVC、MVP、MVVM的介绍,觉得https://www.cnblogs.com/guwei4037/p/5591183.html这编文章的图解是最准确的,但是没有对应的OC 代码示例,故写下这篇心得,以备自己复习。


一、MVC(Model-View-Controller)


MVC是比较直观的架构模式,用户操作->View(负责接收用户的输入操作)->Controller(业务逻辑处理,网络请求等)->Model(数据持久化)->View(将结果反馈给View)。

具体在iOS上的表现为,用户操作时,触发了View的事件(例如点击、滑动等),一般而言 事件都是这样绑定的 

[button addTarget:self action:@selector(loginButtonClick) forControlEvents:UIControlEventTouchUpInside];

这个时候 View的事件就传到了 C (ViewController)里,即 -(void)loginButtonClick:(UIButton*)button{} 方法里。

根据需求,比如请求网络数据,网络请求返回后,组织成Model。

然后再把Model传入View中,由View根据Model的信息自己更改UI展现, 

即 -(void)setUserInfoModel:(XXUserInfoModel *)model{

    _model = model;

    _nameLabel.text = model.name;

}


二、MVP(Model-View-Presenter)


MVP是把MVC中的Controller换成了Presenter(呈现),目的就是为了完全切断View跟Model之间的联系,由Presenter充当桥梁,做到View-Model之间通信的完全隔离。

与MVC类似,但拆解model 的信息并展示的工作放在了Presenter上。很明显,这会照成逻辑代码,UI展示代码全在Presenter上,导致其代码量具大化。


三、MVVM(Model-View-ViewModel)

一般与 reactiveCocoa 框架配合使用。怎么看起来有点像MVP,等我用了有感想再补充上去吧。

猜你喜欢

转载自blog.csdn.net/gdutxzy/article/details/80390168