5分鐘學設計模式之《簡單工廠模式》
簡單工廠模式
建立型模式的一種。簡單工廠模式(又叫做靜態工廠方法)是最簡單的設計模式之一,但它並不屬於 GoF的 23 種設計模式之一。該模式所解決的問題是將物件的建立和使用分離,通過提供簡單的引數,從工廠獲取所需的物件例項,實現物件建立和使用的分離。
簡單工廠模式定義
對於簡單工廠模式的定義是:定義一個工廠。他可以根據引數的不同返回不同類的例項,被建立的例項通常都具有共同的父類。
從定義不難看出,簡單工廠模式其中涉及 3 個關鍵角色,分別是:工廠、抽象類和具體類。的確是這樣的,每個類在其中各司其職:
- 工廠類的職責是:實現建立具體類的例項的內部邏輯,同時工廠類還要提供靜態的工廠方法,該方法返回具體類的例項。
- 抽象類的職責是:封裝所有具體類的公有方法。
- 具體類的職責是:它是工廠的建立目標,同時每個具體類都繼承了抽象類。
簡單工廠模式實現
典型的簡單工廠模式類圖如上所示,其中最重要的靜態工廠方法一般實現如下:
public static ProductFactory getProduct(String arg){
Product product = null;
if (arg.equals("A")) {
product = new ConcreteProductA();
return product;
} else if (arg.equals("B")) {
product = new ConcreteProductB();
return product;
}
// ......
}
簡單工廠模式適用環境
- 工廠類負責建立的物件比較少,由於建立的物件比較少,不會造成工廠方法中的業務邏輯過於複雜
- 呼叫方只知道傳入工廠類的引數,對於如何建立物件並不關心
簡單工廠模式優缺點
優點:
1、簡單工廠類實現了物件建立和使用分離
2、呼叫方無須知道所建立的具體類的類名,只需要知道具體類所對應的引數即可
3、通過引入配置檔案,可以在不修改任何程式碼的情況下,更換和增加新的具體類,在一定程度上提高了系統靈活性
缺點:
1、由於工廠類集中了所有的建立邏輯,職責過重,一旦不能正常工作,所有的呼叫方都會受到影響
2、使用簡單工廠模式增加了系統中類的個數
3、擴充套件困難,一旦新增具體類就不得不修改工廠類的邏輯,不符合開閉原則
相關文章
- 設計模式之簡單工廠模式設計模式
- golang設計模式之簡單工廠模式Golang設計模式
- 掌握設計模式之簡單工廠模式設計模式
- 設計模式之工廠模式!深入解析簡單工廠模式,工廠方法模式和抽象工廠模式設計模式抽象
- Java常用設計模式之簡單工廠模式Java設計模式
- 設計模式 - 簡單工廠模式設計模式
- 【設計模式】簡單工廠模式設計模式
- 設計模式-簡單工廠、工廠方法模式、抽象工廠模式設計模式抽象
- 工廠模式之簡單工廠模式模式
- 設計模式(一)—— 簡單工廠模式設計模式
- java設計模式-簡單工廠模式Java設計模式
- C# 設計模式(1)——簡單工廠模式、工廠模式、抽象工廠模式C#設計模式抽象
- 設計模式----簡單工廠設計模式
- 設計模式入門-簡單工廠模式設計模式
- 23種設計模式(一)---簡單工廠設計模式設計模式
- 設計模式系列之一:簡單工廠模式設計模式
- 設計模式 --並不簡單的工廠模式設計模式
- Yii2設計模式——簡單工廠模式設計模式
- Java設計模式學習筆記(二) 簡單工廠模式Java設計模式筆記
- 設計模式之【工廠模式】設計模式
- 設計模式之工廠模式設計模式
- c#簡單工廠設計模式C#設計模式
- 極簡設計模式-工廠模式設計模式
- 設計模式 | 簡單工廠模式及典型應用設計模式
- 設計模式-C#實現簡單工廠模式設計模式C#
- 設計模式學習筆記之工廠模式設計模式筆記
- 簡單工廠模式、工廠模式、抽象工廠模式比較模式抽象
- 設計模式之工廠模式(一)設計模式
- python設計模式之工廠模式Python設計模式
- 設計模式之工廠方法模式設計模式
- Javascript 設計模式之工廠模式JavaScript設計模式
- 設計模式二之工廠模式設計模式
- PHP設計模式之工廠模式PHP設計模式
- 設計模式之工廠模式(三)設計模式
- 設計模式之工廠模式(二)設計模式
- 略懂設計模式之工廠模式設計模式
- Java設計模式之工廠模式Java設計模式
- 一.設計模式之工廠設計模式設計模式