iT邦幫忙

2021 iThome 鐵人賽

DAY 2
0
自我挑戰組

一個令我自豪的App完成之路系列 第 2

從架構開始重新認識Day2

  • 分享至 

  • xImage
  •  

MVC介紹

希望能將複雜的東西簡單化

如果給我一句話我會說下面這句

Model、View、Controller 的區分,是希望能把應用程式的內部運作歸納成不同的部門,是一種物件導向的應用

那麼再來詳細說明其中Model、View、Controller之間的關係

Model 負責和資料庫溝通,要和資料作出CRUD的話,需要先將資料從資料庫存取到應用程式的某程式物件中

註:CRUD是指(Create Read Update Delete)

主要負責商業邏輯

View 負責管理畫面的呈現

Controller 負責掌控互動邏輯,由Controller負責通知其他層,類似MVC架構的傳信人

像是負責帶著Data在view跟model之間

https://ithelp.ithome.com.tw/upload/images/20210906/20140972ugyLhWMIis.png

這張圖取自Apple的官方文件,揭示一些這些分工之間是如何彼此溝通

從工作最多的Controller開始說起(Model跟View應該算是易懂)

剛剛說了Controller是個傳信人

  • Q:這個傳信人首先需要傳信那麼信是哪來的?
    • A:Model層(負責資料的部分) // Model to Controller
  • Q:這些信要給誰,是誰要使用?
    • A:大機率都是給View層使用(負責呈現的部分) // Controller to View
  • Q:當其他人要看其他信(View)的時候?
    • A:通知傳信人(Controller層)來說要哪些東西 // View to Controller
  • Q:傳信人該去找誰?
    • A:該去找會有這些信資料的地方(Model層) // Controller to Model

上面我們完成了這四條線的彼此交織

下面分享一張Chiwen Lai大神的MVC圖(網址會附在最下面)

https://ithelp.ithome.com.tw/upload/images/20210906/20140972NwdVoEZwU8.png

這張圖很清楚地把會在Swift開發上會用到的幾個通知方式都列了出來

  1. Controller去找Model挖資料
  2. Controller透過@IBOutlet去通知View呈現
  3. View 通知 Controller有3個方法
    1. Target-Action
    2. Delegate(View指派Controller作為代表負責做事)
    3. Data Source(View 詢問 Controller 資料呈現)
  4. Model層透過下面兩個方法來聯絡Controller
    1. Notification
    2. KVO

在官方文檔下寫著

ViewController主要的職責有

  • 更新view中的內容,
  • 回應使用者互動 在view下
  • view的Layout
  • 通知其他的物件(包括其他的ViewController)

好處:

方便使用重複已經完成的程式碼

方便維護各自架構下的程式碼

方便多人分工

缺點:

需要進行多一點事前規劃

需要維護的檔案也較多

結語:

因為iOS開發是透過MVC架構,故了解MVC架構下能夠更能了解為何要用ViewController、View 等

參考鏈結

[APP開發-使用Swift]觀念介紹: MVC


上一篇
就先在這邊幫他上了一個主題了 Day1
下一篇
從登入畫面開始做起(上)Day3
系列文
一個令我自豪的App完成之路32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言