據說設計模式有很多種⋯⋯而MVC是超級常用的一種,在還沒有物件導向的概念、或者是值型別、參考型別的概念的時候,我們寫的程式碼可能就像是作曲家在一個無限延伸的五線譜上面寫東西,
寫到整個結束(雖然我不知道莫札特那個年代有沒有Git河河,但我敢確定他一定不知道物件導向)。
物件導向的概念基本上在讀完語法、進入實作後,就應該明白一些事情,比如說:「一定有哪些地方負責哪些事情。」
由於寫樂譜跟寫程式差太多了,所以我們必須了解一件事情,就以Swift開發來說,最後要做成一個各有負責的架構,才會讓開發者們方便管理所有的資訊。
那MVC架構分別在做哪些事情?
Model在做的事情就是資料的建模,許多時候我們需要建模來讓資料可以被讀取,不管是API也好,或是內部構建的資料。
視圖的部分,就是我們所見手機上所有的元件(按鈕、搜尋列.....etc),任何我們在畫面上可能按的,都會在View這個區塊裡宣告、排版。
哦,還有初始化。
在controller中,主要會掌控的事情,大抵脫不了幾個:
生命週期的控制、一些View會在這裡面被初始化、還有一些data的計算......諸如此類的,或者正如Xcode在預設的APP的swift檔裡就附的:ViewController(視圖控制器)。它的責任就是控制畫面的所有事情。
Well,或許正如圖上面說的,View會傳送一個action給Controller,讓Controller知道使用者現在做了些什麼事情,Controller會根據View的要求,內部運作相關邏輯。
Model跟View之間是不會有任何的作用的,因為Model是所謂的資料藍圖,而View是畫面的作用。兩個系列的檔案如果會溝通,那⋯⋯可就糟了!
Controller跟Model呢?Controller也許會跟Model調用一些屬性或方法,讓屬性方法經由藍圖的實現,讓Controller調用,所以,嚴格來說,Controller並不會跟Model「溝通」,感覺起來比較像是:Controller要哪些東西,會從Model獲取。
不過,Swift的MVC架構為什麼會是這個樣子呢?
或許下一篇文章會為我們解答!
鐵人賽