先看完這篇,搞懂MVC架構是什麼之後,再回去看看前一篇的範例應該就能比較看得懂為何要寫成那樣了。
MVC三個字分別代表的是Model、View和Controller。
Model:資料模型,其負責的是操作資料及處理資料邏輯,它的工作內容包括定義資料結構、讀取及寫入資料庫的資料、資料格式驗證、定義與驗證資料庫商業邏輯等。
View:檢視,負責顯示使用者介面與資訊、處理應用程式的輸入輸出,工作內容包括指定資料傳送方法(GET or POST等)、參考model的定義或將controller所傳送的資料呈現在使用者介面上、透過javascript之類的前端語言驗證資料格式、把畫面弄的更好看(?)等。
Controller:控制器,上一篇有提過,它是model和view之間的溝通橋樑,主要負責控制應用程式的流程。工作內容包括指定要呈現哪個view、處理及回應使用者介面的輸入和互動、從model中獲取資料等。
圖片來源:https://progressbar.tw/posts/95
其實嚴格來說,後面會介紹的PHP框架--Laravel不算是完全依照MVC的標準來設計的,它只是借用了MVC的概念將Model、View、Controller分離。
真正的MVC應該要以 觀察者模式 來實作,也就是當Model資料改變時應該會直接通知View做出反應
使用MVC架構來開發的好處是它的分工明確,可提高程式的維護性,而且能讓程式碼更容易被重複使用。
之前用原生PHP練習做留言板時就有感受到將資料、畫面及邏輯處理全部寫在一起的麻煩之處。很多時候,我們會需要多個不同的view來呈現同一塊資料內容,但如果每增加一個view就要把同一塊程式碼複製貼上,即便這塊程式碼只有一小部份有問題需要更改,還得大費周章的把每個包含這塊程式碼的檔案一一叫出來做修改。
如果能夠將資料模型、畫面和程式邏輯各個功能拆分開來寫,那麼發現問題想修改檔案的時候就只需要更動負責處理相關內容的某幾個檔案就好。