# Day18--如果我早一点追求MVC小姊姊,我就不会乱写了

据说设计模式有很多种⋯⋯而MVC是超级常用的一种,在还没有物件导向的概念、或者是值型别、参考型别的概念的时候,我们写的程序码可能就像是作曲家在一个无限延伸的五线谱上面写东西,

写到整个结束(虽然我不知道莫札特那个年代有没有Git河河,但我敢确定他一定不知道物件导向)。

物件导向的概念基本上在读完语法、进入实作後,就应该明白一些事情,比如说:「一定有哪些地方负责哪些事情。」

由於写乐谱跟写程序差太多了,所以我们必须了解一件事情,就以Swift开发来说,最後要做成一个各有负责的架构,才会让开发者们方便管理所有的资讯。

那MVC架构分别在做哪些事情?

  1. Model模组
  2. Controller 控制
  3. View 画面

Model

Model在做的事情就是资料的建模,许多时候我们需要建模来让资料可以被读取,不管是API也好,或是内部构建的资料。

View

视图的部分,就是我们所见手机上所有的元件(按钮、搜寻列.....etc),任何我们在画面上可能按的,都会在View这个区块里宣告、排版。

哦,还有初始化。

Controller

在controller中,主要会掌控的事情,大抵脱不了几个:
生命周期的控制、一些View会在这里面被初始化、还有一些data的计算......诸如此类的,或者正如Xcode在预设的APP的swift档里就附的:ViewController(视图控制器)。它的责任就是控制画面的所有事情。

M、V、C之间会沟通吗?

Well,或许正如图上面说的,View会传送一个action给Controller,让Controller知道使用者现在做了些什麽事情,Controller会根据View的要求,内部运作相关逻辑。

Model跟View之间是不会有任何的作用的,因为Model是所谓的资料蓝图,而View是画面的作用。两个系列的档案如果会沟通,那⋯⋯可就糟了!

Controller跟Model呢?Controller也许会跟Model调用一些属性或方法,让属性方法经由蓝图的实现,让Controller调用,所以,严格来说,Controller并不会跟Model「沟通」,感觉起来比较像是:Controller要哪些东西,会从Model获取。

不过,Swift的MVC架构为什麽会是这个样子呢?
或许下一篇文章会为我们解答!

tags: 铁人赛

<<:  第18天~SharedPreference常被使用於资料储存

>>:  Flutter体验 Day 25-SharedPreferences

Day 0x18 - 使用 Laravel 串接之结尾及自我检讨

今天会是单纯的自我对话,没有任何程序 0x1 回想 Laravel 开发过程 Laravel 对我来...

Day 28:IRQ (Part 2) - 中断突进!简单的 IRQ 程序

接下来的实验中,会写一个把 GPIO 当作是中断的来源的程序。这个 GPIO 由 Arduino 发...

Day.12 「来为网页添加动画吧!」 —— CSS 动画(animation)

现在我们会使用具有互动性的简单渐变效果了,接着要来试着让网页能增添更多活力,不需要我们操作,就会自...

Day20 Plugin 从零开始到上架 - 取得授权码(iOS)

接下来我们先切到iOS,换去处理iOS是如何取得权杖的 目标 与Androi 步骤一样,须先取得IN...

AI ninja project [day 21] 自动编码器 Autoencoders

可以先看看Autoencoders的构造, 将原始的numpy array 或是tensor(可能是...