一、什麼是簡單工廠模式
簡單工廠模式是一種對象創建型模式,又叫靜態工廠方法模式,它定義一個工廠類,可以根據參數的不同返回不同類的實例。簡單工廠模式屬於創建型模式,提供了一種創建對象的方法,而不需要指定具體的實現類。
在簡單工廠模式中,客戶端需要調用工廠類的靜態方法來創建所需的接口對應的具體實現類的對象,而無需自己創建或者知道這些類的實現方式。簡單工廠模式將對象的創建和使用分離,提供了一種較好的解耦方式。
二、簡單工廠模式的優點
1、客戶端無需關心所要創建對象的具體實現類,只需知道所需接口的名稱即可,從而降低了客戶端對於實現類的耦合度,同時也方便了更換具體實現類;
2、具體創建實現類的代碼被封裝在工廠類中,增加了代碼復用性,提高了系統擴展性;
3、簡單工廠模式可以看作是迎合了“開閉原則”的一種實現方式。
三、簡單工廠模式的缺點
1、工廠類職責過重,增加了工廠類的複雜度和維護難度,同時也增加了系統的耦合度;
2、新增、刪除、修改產品時都需要修改原有的工廠類,違背了“開閉原則”中對於擴展開放、對於修改關閉的要求,因此不利於系統的維護和擴展。
四、簡單工廠模式的應用場景
1、需要根據不同參數創建不同實現類的對象時,可以使用簡單工廠模式。
2、創建工廠類和具體實現類耗時和資源較大,可以使用簡單工廠模式避免重複創建對象的過程。
五、簡單工廠模式的代碼實現
以下是一個簡單的簡單工廠模式的 Java 代碼實現:
interface Product { void use(); } class ConcreteProduct1 implements Product { @Override public void use() { System.out.println("使用產品1"); } } class ConcreteProduct2 implements Product { @Override public void use() { System.out.println("使用產品2"); } } class Factory { public static Product getProduct(String productName) { switch (productName) { case "Product1": return new ConcreteProduct1(); case "Product2": return new ConcreteProduct2(); default: throw new IllegalArgumentException("No such product."); } } } public class Client { public static void main(String[] args) { Product product = Factory.getProduct("Product1"); product.use(); } }
以上代碼實現了一個簡單工廠模式,其中接口 Product 定義了抽象產品類,類 ConcreteProduct1 和 ConcreteProduct2 分別實現了 Product 接口,工廠類 Factory 定義了靜態方法 getProduct() 來根據參數返回 Product 接口的不同實現類的對象。
六、簡單工廠模式的使用注意事項
1、工廠類只負責創建對象,不應有其他的額外功能;
2、工廠類的創建方法一般為靜態方法,但並不是必須的;
3、工廠類一般使用單例模式,確保全局只有一個工廠類;
4、客戶端只需知道所需的具體產品類名稱即可,不需知道如何創建對象的細節,但需要知道所需產品的公共接口;
5、簡單工廠模式的核心思想是將對象的創建和使用分離,提高了系統的擴展性和穩定性,但也增加了系統的複雜度和維護難度,需要權衡利弊進行使用。
原創文章,作者:UHICP,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/351755.html