1. 程式人生 > 其它 >設計模式之工廠設計模式

設計模式之工廠設計模式

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》!