目錄
基本概念
**及例項
工廠方法模式(factory method):定義乙個用於建立物件的介面,讓字類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到其子類;
簡單工廠模式的最大優點在使用者工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關的類,對於客戶端來說,去除了具體產品的依賴。
工廠方法模式實現時,客戶端需要決定例項化哪乙個工廠來實現運算類,選擇判斷的問題還是存在的,也就是說,工廠方法把簡單工廠內部邏輯判斷移到了客戶端**來進行。
uml圖如下(這裡以計算器為例)
程式執行截圖如下:
原始碼如下:
head.h
#ifndef head_h
#define head_h
//運算相關
class operation;
class addoperation: public operation;
class multioperation: public operation;
//工廠相關
class ifactory;
class addfactory: public ifactory;
class multifactory: public ifactory;
#endif //head_h
head.cpp
#include "head.h"
#include #include using namespace std;
operation *ifactory::createoperation()
operation *addfactory::createoperation()
double operation::getresult()
addoperation::addoperation()
double addoperation::getresult()
multioperation::multioperation()
double multioperation::getresult()
operation * multifactory::createoperation()
main.cpp
#include "head.h"
#include using namespace std;
int main(int *argc, int *ar**)
C 設計模式 工廠模式
可以方便的使用繼承來實現建立方法的多樣性,區別於使用靜態方法定義簡單工廠。工廠方法模式 定義了乙個建立物件的介面,但由於子類決定要例項化的類是哪乙個。工廠方法讓類把例項化推遲到了子類。依賴倒置原則 要依賴抽象,不要依賴具體類 以下指導方針將避免你再oo設計中違反依賴倒置原則 盡量達到這個原則,不一定...
C 設計模式 工廠模式
建立型模式,提供了一種建立物件的最佳方式。在工廠模式中,我能在建立物件時不會對客戶端暴露建立邏輯,並且通過使用乙個公用的介面來指向新建立的物件。我們將建立乙個 shape 介面和實現 shape 介面的實體類。下一步是定義工廠類 shapefactory。factorypatterndemo,我們的...
C 設計模式 工廠模式
工廠模式的分類 簡單工廠 include include include using namespace std 基類 class carvirtual void show 0 純虛函式 protected string name 寶馬 class bmw public car void show ...