工廠方法模式同樣屬於類的建立型模式又被稱為多型工廠模式 。工廠方法模式的意義是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到子類當中。
核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,僅負責具體工廠子類必須實現的介面,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工廠角色的情況下引進新的產品。
抽象工廠(creator)角色
工廠方法模式的核心,任何工廠類都必須實現這個介面。
具體工廠( concrete creator)角色
具體工廠類是抽象工廠的乙個實現,負責例項化產品物件。
抽象(product)角色
工廠方法模式所建立的所有物件的父類,它負責描述所有例項所共有的公共介面。
具體產品(concrete product)角色
工廠方法模式所建立的具體例項物件
工廠方法模式與簡單工廠模式在結構上的不同不是很明顯。工廠方法類的核心是乙個抽象工廠類,而簡單工廠模式把核心放在乙個具體類上。
工廠方法模式之所以有乙個別名叫多型性工廠模式是因為具體工廠類都有共同的介面,或者有共同的抽象父類。
當系統擴充套件需要新增新的產品物件時,僅僅需要新增乙個具體物件以及乙個具體工廠物件,原有工廠物件不需要進行任何修改,也不需要修改客戶端,很好的符合了「開放-封閉」原則。而簡單工廠模式在新增新產品物件後不得不修改工廠方法,擴充套件性不好。工廠方法模式退化後可以演變成簡單工廠模式。
「開放-封閉」通過新增**的方式,不是通過修改**的方式完成功能的增強:
#include "iostream"
using namespace std;
class fruit
};class fruitfactory
};//香蕉
class banana : public fruit
};//蘋果
};void main()
建立型模式之 工廠模式
設計模式中我們將工廠模式分了三種 簡單工廠模式,工廠方法模式,抽象工廠模式。其實我們可以看作兩類,也就是工廠方法模式和抽喜工廠模式,他們兩個都屬於建立型模式,就寫在一起對照參考 將簡單工廠模式看成是工廠方法模式中的乙個特例。下面我們來對比工廠方法模式和抽象工廠模式。首先我們以乙個例子為參考,看一下工...
設計模式之建立型模式 工廠模式
工廠模式 factory pattern 主要用於選擇,根據客戶不同的要求,使用同乙個介面實現不同的功能,然後使用工廠類來判斷使用哪個例項介面,工廠模式是乙個最佳的建立物件的模式。工廠模式的優點 1 在呼叫者只需要知道需要建立的名稱就能夠建立乙個物件,而不用知道產品功能的具體實現,簡化了呼叫者的工作...
建立型模式之簡單工廠模式
複習用,不適合初學。複習用,不適合初學。複習用,不適合初學。1.定義 factory pattern 簡單工廠模式又稱為靜態 static 工廠模式。在簡單工廠模式中,可以根據引數的不同返回不同類的例項。簡單工廠模式專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。2.角色 f...