傳統三角形 MVC (Model-View-Controller 互相關聯) 在 C/S 架構下運作良好,但 Web 環境下的無狀態 HTTP 迫使 View 與 Model 斷開,演變為雙鍵結構 (Controller 為中介)。隨著應用複雜度指數級增長,單層 MVC 顯得單薄——各層內部邏輯膨脹、跨層依賴混亂、Controller 成為「上帝類別」。遞歸 MVC 應運而生。
核心思想:將每一層 (Model/View/Controller) 內部再以 MVC 結構拆解,形成層層疊疊的「MVC 鏈」。




關鍵洞見:同一物件在不同層級扮演不同角色。界面控制器是 View-MVC 的 Controller,同時是 Controller-MVC 的 View;業務控制器是 Controller-MVC 的 Controller,也是 View-MVC 的 Model,同時是 Model-MVC 的 View。這種角色相對性自然形成鬆耦合的鏈狀結構。
| 維度 | 傳統 MVC 束 (平行結構) | 遞歸 MVC 鏈 (層疊結構) |
|---|---|---|
| 建構單元複雜度 | 高 (單層承載過多職責) | 低 (每層內部再分 MVC) |
| 層間耦合度 | 高 (跨層直接依賴) | 低 (僅透過定義良好的介面) |
| 檔案管理成本 | 龐大平行結構難維護 | 模組化、層次化易導航 |
| 擴展性 | 修改常需跨層動刀 | 局部擴展不影響其他層 |
| 團隊協作 | 衝突頻繁 | 層級所有權清晰 |
遞歸 MVC 不是增加複雜度,而是將複雜度局部化、標準化。以計算機擅長處理的結構複雜度,換取人工建構單元的簡潔度。這是大型 Web 應用架構演進的必由之路,已在多家企業核心系統驗證有效。