什麼是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 模型