大家肯定都听过MVC
这种架构,首先我们来看下Apple
版的MVC
是什么样的,就是Apple
官方所说的MVC
是一个什么样的方案,我们可以看到MVC
其实就是三个角色,Model
,View
,Controller
,那这三个角色之间是一个什么样的关系呢,如果是Apple
官方的MVC
的话,大概是这个样子的
- 首先
Controller
是持有View
的,View也会通知Controller
去处理一些业务逻辑, - 其次
Controller
也持有Model
,当Model
变化时(比如加载网络数据了等等),Controller
是知道的,所以又把最新的数据显示到View
上 - 最后其实
Controller
是Model
和View
中间的一个桥梁,那我们可以看到Apple
版的MVC
的一个特点
就是View和Model之间是没有关联的,View不知道Model的存在,Model也不知道View的存在
,那大家最熟悉的应该就是我们神奇万能
的UITableView
了,UITableView
算是把Apple版
的MVC
发挥的淋漓尽致
实例
接下来我们用一个简单的例子来说明下,我们新建一个项目,比如是一个新闻类的项目,本地简单的模拟下网络加载数据然后展示到TableView上,我们首先创建一个XXNews
的Model
1 | @interface XXNews : NSObject |
,接着创建一个XXNewsViewController
继承自UITableViewController
1 | @interface XXNewsViewController () |
我们来看看MVC
三个角色,
- Model(News),
- View(TableView),
- Controller(XXNewsViewController),
那我们来验证下这个MVC
跟我们上面说的是否一致
我们看到
XXNewsViewController
拥有newsData
(可以创建,加载这些模型数据),而且XXNewsViewController
也拥有View(TableView)
,然后,View(TableView)
是不知道这个Model(News)
的存在的,Model(News)也不知道View(TableView)的存在
,
那View是如何显示Model的数据的呢?全靠
Controller
这个桥梁把Model
的数据取出来,然后赋值给View
对应的控件上,所以跟我们上面说的是一致的,这个呢就是Apple版
的MVC
了,接下来我们可以总结下这个架构的优缺点
优缺点
优点:
View
和Model
可重复利用,(这也解释了TableView
为啥这么万能:不关心Model
,比如我们显示个商品的列表,只需换下Model
,然后赋值对应的控件就行了,而不用换TableView
)- 大家如果自定义View的时候想做的复用性很强的话,可以操考下TableView的设计
缺点:Controller的代码过于臃肿
总结一下
架构这种东西呢,不是我三言两语能说清楚的,我在这里写的也只是些概念、Demo,还是需要大家多思考,多练习,不断的积累项目经验,才能悟出来更高的更深层次的东西
今天先到这里,明天接着更新MVC-变种
One More Thing
点击查看 2020—课程列表 全网IT各种资源有需求的可以微我,或者你喜欢的课程都可以给我发链接剩下的我来搞定
喜欢的朋友可以扫描关注我的公众号(多多点赞,多多打赏,您的支持是我写作的最大动力)关注有福利可以使用免费梯子自由上网