首页 关于 微信公众号
欢迎关注我的微信公众号

iOS中的MVC概念

MVC 的概念其实都已经听到耳朵起茧了,不过最近看了斯坦福的iOS开发公开课,还是觉得挺有收获的,所以再在这里总结一下。

MVC都是些啥

Model

Model 是 What your application is(but not how it is desplayed),各种数据以及它们之间的逻辑等都是Model,Model是独立于UI的。

Controller

Controller 是 How your Model is presented to the user (UI logic),即UI逻辑,Controller来把Mode的数据和逻辑表达出来,绘制、展示到屏幕上。

View

View 是 Your Controller's minions,是Controller要用到的各种基础性的UI元素(Genetic UI Element),是Controller表达Model数据和逻辑用到的工具。

总的来说,就是 Controller 用 View 来把 Model 表达到屏幕上。

M、V、C之间如何对话

Controller —> Model (OK)

Controller 对相应的 Model 说话是很正常的。

Controller —> Vew (OK)

Controller 对相应的 View 说话也是很正常的。

Model <—> View (Never)

Model 和 View 之间则永远不要对话!

View —> Controller (Limited)

View 一般不要对 Controller 直接说话。但有时候,确实有这个需要,所以有以下几种方式让View对Controller说话:

Model —> Controller (Limited)

Model 一般也不要对 Controller 直接对话。但有时候也有需求,所以提供了一些机制来满足这些需求:

MVC对话示意图

一大波MVCs

通过组装很多个 MVCs 我们就能构建更复杂的程序。在这里面我们可能会用到分层式的 MVC 的概念,比如把一个 MVC 当做另一个 MVC 的 View 的一部分。原理其实都是一样的。

合理的多层 MVCs 结构应该如图:

不合理的则是这样的:

Blog

Opinion

Project