
1.開發環境
- IDEA版本: 2022.1.4
- JDK版本:17.0.3
2.模式由來
2.1 自定義MailSender類

2.2 自定義Computer類
2.3 分析圖

2.4 案例分析
- 由于Computer類和MailSender類之間的耦合度比較高,而且創建物件的代碼太固定了,若希望使用短信發送的功能需要修改Computer類,這種修改違背了開閉原則,為了解決該問題,就可以將創建物件的作業移交出去,而工廠設計模式就是一種創建物件的設計模式,而且可以在創建物件時不對外暴露具體的創建邏輯,
3 普通工廠方法模式
3.1 基本概念
- 普通工廠方法模式就是建立一個工廠類,通過生產方法的引數來進行具體實體的創建,
3.2 自定義Sender介面
3.3 修改MailSender類
3.4 自定義SmsSender類

3.5 自定義SendFactory類
3.6 修改Computer類
3.7 分析圖

3.8 案例分析
- 在普通工廠方法模式中,若傳遞的字串出錯,則不能正確創建物件,而且可能出現空指標例外,所以容錯率不高,
4.多個工廠方法模式
4.1 基本概念
- 多個工廠方法模式就是通過多個不同的生產方法對實作同一介面的不同實作類分別進行物件的創建,
4.2 修改SendFactory類
4.3 修改Computer類
4.4 分析圖

4.5 案例分析
- 在多個工廠方法模式中,為了能夠正確創建物件,需要先創建工廠類的物件才能呼叫工廠類中的生產方法,
5.靜態工廠方法模式
5.1 基本概念
- 靜態工廠方法模式就是將多個不同的生產方法加上static關鍵字提升為類層級,此時只需要通過類名.的方式就可以進行方法的呼叫,從而進行不同實體的創建,
5.2 修改SendFactory類
5.3 修改Computer類
5.4 分析圖

5.5 案例分析
- 靜態工廠方法模式中類的創建依賴工廠類,如果想要擴展程式來生產新的產品,就必須對工廠類的代碼進行修改,這就違背了開閉原則,
6.抽象工廠模式
6.1 基本概念
- 抽象工廠模式就是將多個不同的生產方法放在不同的工廠類中,讓多個工廠類實作同一個介面,此時只需要通過不同的工廠類就可以進行不同實體的創建,
6.2 自定義SendFactory介面
6.3 自定義MailSendFactory類
6.4 自定義SmsSendFactory類
6.5 修改Computer類
6.6 分析圖

6.7 案例分析
- 現在想要拓展程式生產新的產品,就只需要增加新的工廠類即可,不用違背開閉原則,同時每個工廠類對應一個產品,符合單一職責的原則,
更多精彩歡迎關注微信公眾號《格子衫007》!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/539812.html
標籤:Java
上一篇:python中的高階函式
