說到工廠方法,很容易就想到簡單工廠,而實際上工廠方法也是和簡單工廠有點類似。聯想到簡單工廠模式中的例子,新增乙個日誌類,必須修改clogfactory的靜態方法getinstance(),這點就是簡單工廠不能解決的了。工廠模式就是為了解決簡單工廠的這種弊端而改進的。
2、工廠方法模式:
使用率:使用的較多的模式之一,但是由於其產生了大量的工廠類,當工廠建立的產品類在4個以上,一般就不使用該模式。
使用場景:一批具有相同屬性的產品,而使用者無需感知有多少個產品,也無需感知產品本身的實現,使用者只需要知道那個產品在那個工廠中被建立即可。就像電腦生產廠商,需要買amd的晶元就去amd的工廠購買,要買英特爾的晶元就去英特爾工廠購買一樣。
例項:依然使用打日誌,一般的程式都有列印日誌的需求,有些是寫網路日誌,有些是寫本地檔案,有些是寫資料庫日誌。
分析:使用者(使用方)肯定知道自己是需要列印那種日誌,也就是說使用者自己知道需要使用什麼工廠,那麼在使用的時候我們直接通過該工廠建立相應的日誌物件就可以了。
類關係圖:
實現**:
//列印日誌抽象類
class clog
class cnetlog : public clog
}class cdblog : public clog
}class cfilelog : public clog
}//工廠抽象類
class clogfactory
{public :
clog* getobject() = 0;
}class cnetlogfactor : public clogfactory
}class cfilelogfactor : public clogfactory
}class cdblogfactor : public clogfactory
}int main(void)
可以看到使用者決定需要呼叫那個工廠建立物件,而無需關心該工廠會建立什麼樣的物件,也無需知道該物件如何工作。相對於簡單工廠模式,工廠方法新增物件類,需要改動任何東西。只不過在使用者需要的時候建立該物件的工廠即可。
設計模式 工廠方法模式
一 工廠方法 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...