Try   HackMD

MVC 模式 (Model–view–controller)

什麼是 MVC?

  • 軟體工程中的一種軟體架構模式,把軟體系統分為三個基本部分:模型(Model)、視圖(View)和控制器(Controller)。

    論文出處

MVC 架構

  • 目的是實現一種動態的程式設計,便於後續對程式的修改和擴充簡化,並且使程式某一部分的程式碼可以重複利用。

    • 例如:使用者希望能透過瀏覽器來收發電子郵件,還能手機來存取電子信箱,甚至能透過 MAC 查看等等,在MVC設計模式中,Model 回應使用者請求並返迴對應資料,View 負責格式化資料並把它們呈現給用戶,同一個 Model 可以被不同的 View 共享,所以大大提高了代碼的可重用性。
  • 除此之外,此模式透過對複雜度的簡化,使程式結構更加直覺。

    1. 控制器(Controller):負責轉發請求,對請求進行處理。
    2. 視圖(View): 介面設計人員進行圖形介面設計。
    3. 模型(Model): 程式設計師編寫程式應有的功能(實現演算法等等)、資料庫專家進行資料管理和資料庫設計(可以實現具體的功能)。

    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →

      舉例來說,在 MVC 模式中,當使用者會透過 APP 或 Web 介面來操作系統,在他按下一個按鈕或是觸發某一個動作時,這時候就會藉由Controller來將我們的Model進行狀態的改變,然後選擇對應的View來呈現UI的部分,這時候View會將剛剛被Controller修改過的Model呈現到使用者的面前。

    簡單簡化後的流程:

    1. User 透過介面發出請求。
    2. Controller截獲使用者發出的請求。
    3. Controller呼叫Model完成狀態的讀寫操作。
    4. Controller把資料傳遞給View。
    5. View渲染最終結果並呈獻給使用者。
  • MVC需要經過良好的設計,才能將工作分割的相當完美,所以在早期MVC架構推廣相當不易,對於小型專案更是困難。對於小型專案的開發者來說,在建構與維護MVC的架構上必須花費很多的時間,所花費的成本遠大於小型專案的成本;而對於大型專案,雖然MVC的架構有利於後續的發展及維護,但因入門門檻高,導致許多專案打退堂鼓。

    現今,由於MVC的架構及維護方式日趨簡易且一致, 因此逐漸成為開發主流方式之一。

  • 優點:

    1. 程式的結構更加直覺化。
    2. 降低維護的複雜度,系統更加方便管理。
    3. 關注點分離:在個別不同的部分,做各自的事情而互不影響結果。
      • 假設你今天在處理使用者操作介面,那就專心的套版,將Controller傳回來的資料看要怎麼擺放
      • 假設在處理資料流傳入的參數驗證,那就在Controller處理完,不用去管會不會影響到View的呈現
      • 假設是跟資料庫的溝通,就在Model裡將它實作好,不需要擔心是否參數有空值或Null, 因為那些該是在Controller處理掉的。
    4. 將程式的修改與功能擴充簡化,提高了程式的發展性,以利於團隊開發。
  • 缺點:

    1. 用於小型專案成本高
    2. 要管理的文件增加
    3. 事前須嚴謹的規劃系統架構
    4. 增加了系統結構和實現的復雜性

開發自己的 MVC 模型

  • 在PHP語言中,大多數的開發人員都是使用MVC模型去開發 Web,所以我們以PHP語言為基礎開Web Application,一方面練習PHP,一方面加深對MVC模型的核心理念的理解。
  1. 把目錄結構設定好:

    1. 隨便先建立一個資料夾,命名專案名稱,ex: /phpMVC,在這資料夾下建立
      • /application : 存放web應用程式目錄
      • /framework : 存放框架檔案目錄
      • /public : 存放所有的公共的靜態資源,比如HTML檔案,CSS檔案和jJS檔案。
      • index.php : 網頁唯一入口檔案。
        Image Not Showing Possible Reasons
        • The image file may be corrupted
        • The server hosting the image is unavailable
        • The image path is incorrect
        • The image format is not supported
        Learn More →
    2. 在application資料夾下再建立下一層的目錄
      • /config : 存放應用的配置檔案
      • /controllers : 應用的控制器類
      • /model : 應用的模型類
      • /view : 應用的檢視檔案
      • 在/controllers資料夾下,我們還需要建立兩個資料夾來分別處裡前後端作業,一個frontend,一個backend。
      • 在view下也建立frontend和backend資料夾。
        Image Not Showing Possible Reasons
        • The image file may be corrupted
        • The server hosting the image is unavailable
        • The image path is incorrect
        • The image format is not supported
        Learn More →
    3. 回到/framework資料夾中,建立 4 個子目錄:
      • /core-框架核心檔案目錄

      • /database-資料庫目錄(比如資料庫啟動類)

      • /helpers-輔助函式目錄

      • /libraries-類庫目錄

        Image Not Showing Possible Reasons
        • The image file may be corrupted
        • The server hosting the image is unavailable
        • The image path is incorrect
        • The image format is not supported
        Learn More →

    4. 在/public資料夾,建立 4 個目錄
      • /css-存放css檔案
      • /images-存放圖片檔案
      • /js-存放js檔案
      • /uploads-存放上傳的檔案
        Image Not Showing Possible Reasons
        • The image file may be corrupted
        • The server hosting the image is unavailable
        • The image path is incorrect
        • The image format is not supported
        Learn More →

    到這裡為止我們就建好 MVC 模型的目錄結構了!

  2. 待補充

  • 待補充