設計模式 工廠方法模式

2021-10-04 13:13:13 字數 934 閱讀 2780

手機廠造手機,肥皂廠造肥皂,藥品廠造藥品。

假設有一大類物件a1,a2,a3,a4…他們都有乙個共同的父類a

a1可以想成是手機,a2可以想成肥皂…

(下面例子的a1factory就是手機廠,a2factory就是肥皂廠)

那麼如何利用工廠方法模式建立這些物件呢?看個例子

1、定義乙個工廠的介面以及返回實體的方法

inte***ce

factory

2、針對每個物件,定義建立他們的工廠,每個工廠都實現第一步的工廠介面
class

a1factory implement factory

}class

a2factory implement factory

}a3、a4類似

3、使用的時候

看到下面這個效果,大概就能明白什麼意思了吧,由工廠的父類,建立出物件,也用對應的父類a來接。那就相當於遮蔽了子類的差異,只要源頭上換個工廠,那麼返回的a就是對應工廠裡面的產生的a的子類物件。

public a getobj

(factory f)

main()

很明顯,工廠方法模式,建立每個物件都需要給他再建立乙個對應的工廠類。這既是優點,又是缺點。

說優點,是因為這樣做,相比較簡單工廠來說,是把類的例項化延遲到了子類工廠上。

說缺點,是因為這樣做,每次有新的型別,都要建立對應的工廠,感覺很冗餘。

經常在工廠方法模式的各個子類工廠中,再使用簡單工廠模式。

也就是說a1factory的create方法,不一定只返回a1,可能還是a1的某個子類,至於具體是哪個,可以給create方法加個type入參,根據type的不同去區分。

總之就是這麼個意思,就是實際生產中,很多情況下都是多個設計模式一起用,並不是只用某個設計模式。

設計模式 工廠方法模式

一 工廠方法 factory method 模式 工廠方法模式的意義是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到工廠子類當中。核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,僅負責具體工廠子類必須實現的介面,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工廠角...

設計模式 工廠方法模式

1 factorymethod.h ifndef factorymethod h define factorymethod h include include using namespace std class osproduct 產品,product,產品的抽象類 class windowspro...

設計模式 工廠方法模式

框架的基礎知識 對框架的理解 框架和設計模式的關係 工廠方法模式 定義 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,factory method使乙個類的例項化延遲到其子類。結構 產品 public inte ce product 具體產品 public class productimpl...