設計模式實戰解析
一、工廠模式(點外賣模式)
1. 核心思想
- 代替直接
new
對象 - 像點外賣一樣獲取對象
2. 實際應用
- Spring框架:
BeanFactory
- JDBC:
DriverManager.getConnection()
3. 三種變體對比
類型 | 特點 | 示例場景 |
---|---|---|
簡單工廠 | 一個工廠生產所有產品 | 小型電商商品創建 |
工廠方法 | 每個產品有專屬工廠 | 跨平臺UI組件創建 |
抽象工廠 | 生產整套產品家族 | 不同風格GUI組件套裝 |
二、策略模式(支付選擇模式)
1. 核心思想
- 定義算法家族
- 運行時自由切換
2. 實際應用場景
- 電商促銷策略(滿減/折扣/優惠券)
- 地圖導航策略(駕車/步行/公交)
- 數據壓縮策略(ZIP/RAR/7z)
三、責任鏈模式(審批流程模式)
1. 核心思想
- 多個處理器串聯
- 請求沿鏈條傳遞
2. 典型應用場景
應用領域 | 具體實現案例 |
---|---|
Web開發 | Servlet Filter鏈 |
游戲開發 | 傷害計算處理鏈 |
企業應用 | 多級審批系統 |
安全框架 | Spring Security過濾器鏈 |
四、對比總結表
對比維度 | 工廠模式 | 策略模式 | 責任鏈模式 |
---|---|---|---|
??主要目的?? | 對象創建 | 算法切換 | 請求處理 |
??靈活性?? | 創建過程可配置 | 運行時動態替換 | 處理流程可重組 |
??典型應用?? | 對象創建場景 | 多種算法策略場景 | 多級處理場景 |
??JDK示例?? | Calendar.getInstance() | Comparator | Servlet Filter |
??Spring示例?? | BeanFactory | ResourceLoader | HandlerInterceptor |
五、面試常見問題
1. 工廠模式相關問題
- Q:Spring中的BeanFactory和FactoryBean有什么區別?
- A:BeanFactory是容器,FactoryBean是特殊Bean的工廠
2. 策略模式相關問題
- Q:為什么策略模式常和工廠模式配合使用?
- A:工廠負責創建策略對象,實現策略的靈活配置
3. 責任鏈模式相關問題
- Q:責任鏈模式在MyBatis中如何應用的?
- A:通過Interceptor鏈實現插件功能