設計模式 3 工廠方法模式

2021-07-22 05:33:51 字數 1044 閱讀 9681

1.意圖

定義乙個用於建立物件的的介面,讓子類決定例項化哪乙個類.

2.適用性

當乙個類不知道它必須所建立的物件的類的時候。

當乙個類希望由它的子類來指定它所建立的物件的時候。

3.抽象工廠和工廠方法的區別:

「抽象工廠」模式依賴於「工廠方法」模式的。因此,抽象工廠強調的是前面的動詞「抽象」,也就是說,你將工廠方法模式中的工廠方法抽象出來的那個"動作或設計"就是「抽象工程」模式了。

---------------------------------

factory method針對的是乙個產品等級結構  

abstract factory是面向多個產品等級結構的

---------------------------------

工廠方法模式:乙個抽象產品類,可以派生出多個具體產品類。 

乙個抽象工廠類,可以派生出多個具體工廠類。 

每個具體工廠類只能建立乙個具體產品類的例項。 

抽象工廠模式:多個抽象產品類,每個抽象產品類可以派生出多個具體產品類。 

乙個抽象工廠類,可以派生出多個具體工廠類。 

每個具體工廠類可以建立多個具體產品類的例項。 

區別:工廠方法模式只有乙個抽象產品類,而抽象工廠模式有多個。

工廠方法模式的具體工廠類只能建立乙個具體產品類的例項,而抽象工廠模式可以建立多個。

#include#include #include using namespace std;

//產品基類

class product

};//具體產品

class producta :public product ;

};class productb :public product ;

};class productc :public product ;

};//基類工廠

class creator

};class standercreator :public creator

};int main()

設計模式 3 工廠方法模式

定義 定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。工廠方法使得乙個類的例項化延遲到了其子類。抽象工廠介面,用於建立計算物件 public inte ce ifactory 抽象計算介面,表示用於實現的業務 public inte ce calculate 具體工廠類,實現抽象工廠介面,返回...

設計模式(3)工廠方法模式

簡單工廠設計模式的思路,決定了每次新增一種具體的產品時,就需要更改工廠內部的產品構成。因為開閉原則,決定了對外開放介面,對內封閉的思路,工廠方法設計模式,不在使用工廠類統一建立所有的具體產品,不同工廠針對不同的產品,新增產品時,需要同時新增對應的工廠。工廠方法模式 定義乙個用於建立物件的介面,但是讓...

初始設計模式3 工廠方法模式

工廠方法模式,即定義乙個用於建立物件的介面,讓子類決定例項化哪個類。定義抽象產品類 public abstract class product 定義具體產品類 public class conproduct extends product 定義抽象工廠類 public abstract class ...