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上,导致其代码量具大化。