5分鐘學設計模式之《簡單工廠模式》

網際網路搬磚工程師發表於2020-11-15

簡單工廠模式

建立型模式的一種。簡單工廠模式(又叫做靜態工廠方法)是最簡單的設計模式之一,但它並不屬於 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、擴充套件困難,一旦新增具體類就不得不修改工廠類的邏輯,不符合開閉原則

 

 

 

相關文章