首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

MVC 模式深度解析:從 Smalltalk 到 Struts 的演進與三大核心設計模式

     編輯:Java 相關知識

MVC 起源與核心職責

MVC 起源於 Smalltalk-80,將用戶界面交互分解為三類對象:

  • Model:業務領域數據與邏輯,無 UI 依賴。
  • View:模型的可視化呈現,多對一關聯同一模型。
  • Controller:處理用戶輸入,轉化為模型操作與視圖更新。

核心設計模式映射

1. Observer 模式 → Model-View 解耦

Model 維護 View 列表,狀態變更發布 notify(),View 訂閱並 update() 刷新。實現:多視圖同步、模型無視圖依賴、動態增減視圖。

2. Composite 模式 → 視圖嵌套組合

CompositeView 繼承 View,內部聚合子 View。客戶端統一視圖介面,遞歸渲染。實現:按鈕面板、調試器界面、任意粒度 UI 復用。

3. Strategy 模式 → Controller 可換行為

View 持有 Controller 引用,運行時替換 Controller 實例即可改變響應策略(如鍵盤命令→彈出菜單、啟用/禁用狀態)。實現:算法族封裝、動態切換、視圖與控制邏輯分離。

Struts 對 MVC 的 Web 適配

MVC 角色Struts 實現說明
ModelJavaBean / EJB / POJO + Service業務邏輯與持久化,框架不限定
ViewJSP + Taglib (html:, logic:, bean:)表現層,通過標簽庫訪問模型數據
ControllerActionServlet (前端控制器) + Action (請求處理器)集中請求分發、表單驗證、類型轉換、視圖轉發

Struts 1.x 採用 ActionForm 封裝表單數據,struts-config.xml 映射請求路徑到 Action,體現了「配置勝過代碼」思想。

MVC 衍生模式

  • Model 2:JSP + Servlet 早期實踐,JSP 為 View,Servlet 為 Controller。
  • MVP (Model-View-Presenter):View 接口化,Presenter 操作 View 接口,利於單元測試。
  • MVVM (Model-View-ViewModel):雙向數據綁定,ViewModel 暴露狀態與命令,前端框架(Knockout, Angular, Vue)主流。

總結

MVC 不僅是分層,更是三大經典設計模式的綜合應用:Observer 解耦數據與視圖,Composite 構建可嵌套 UI,Strategy 封裝可變交互邏輯。Struts 將其映射到 Web 請求-響應週期,奠定了 Java Web 框架架構基因。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved