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 ...