Laravel-MVC設計架構

什麼是MVC設計架構?

在1974年提出,概念是將應⽤程式拆解成不同的功能區塊,各⾃處理負責事項

  • 四人幫(Gang of Four)並沒有把MVC作為一種設計模式︐而是把它當作”一組用 於建構使用者介面的類集合”︐因為它其實是由三個經典的設計模式組合而成︐ 分別為觀察者模式(Observer) . 策略模式(Strategy)和組合模式(Composite)
  • 實作上把系統分成三個區塊︐分別為︓Model . View . Controller

MVC網⾴應⽤流程

Controller控制器
事件層
  • 整個運作過程中的核⼼,掌握與瀏覽器之間的互動⾏為,也負責收 發 Request 與 Response,因此,通常會在 Controller 設置不同 的事件 Event,進⽽觸發不同指令完成後續動作。
  • 例如:當 Controller 收到請求後,Controller 會通知 Model 調度 資料,接著再把資料傳遞給 View 來產⽣樣板,最終將呈現資料的 HTML ⾴⾯回傳到客⼾端的瀏覽器。

Model模型
邏輯層
  • 資料管理與商業邏輯有關的事項,都交由Model來處理。
  • 對資料進⾏「新增、修改、刪除、瀏覽」的動作,屬於資料管理。
  • 電商網站的199免運費、計算訂單總額…等等,屬於商業邏輯。

View視圖
表現層
  • 主要管理與使⽤者互動的介⾯,以Web應⽤來說就是HTML樣板, 若為動態網站,它會依據所傳⼊的資料,呈現出使⽤者所需要的獨 特內容 。

MVC設計架構為何變成主流?
  • 軟體中最常變化的部份,往往是使⽤者操作介⾯ ,使⽤MVC的設計模式,可有效降低使⽤者操作介⾯上的變化對其他部份所造成的衝擊。
  • 因此各種主流的軟體開發語⾔、⼯具及平臺,都以MVC做為畫分使⽤者操作介⾯及其他組成的架構。
  • 不論是桌機的使⽤者操作介⾯應⽤程式框架,或是Web-based的網站應⽤程式框架,幾乎都是基於MVC概念的產物。

優點
  • 各組成相互獨⽴ ,單⼀組成具有⾼聚合⼒ , ⽽不同的組成間耦合⼒低。
  • 組成內的變化,波及到其他組成的機會相對低,可提⾼重⽤性。
  • 各組成基於分責原則,可各⾃隸屬於不同專業。
  • 容易維護與擴展。

缺點
  • 實作⿇煩,較不適合中⼩等規模。
  • 增加系統結構的複雜性,運⾏效率降低容易維護與擴展。

Laravel的解決策略
  • 設計出⼀個清楚的資料夾結構,不需使⽤者⾃⼰建立,專案會⾃動⽣成。
  • 利⽤快取與預編譯等機制來提升效率。

MVC設計架構實作策略
  • 把系統拆解成Model . View . Controller三個區塊︐就能交由不同專業的人來合作開發︐可降低彼此工作的影響︐並提供程式碼的重用性。
  • Laravel已經幫你規劃好了︐你只要照著用即可實作出來。

參考資料

Laravel 的 MVC 模型