在之前,筆者曾簡單介紹過簡單工廠模式,我們說過簡單工廠模式可以使用工廠類根據需求動態生成子類物件,從而方便了未來對演算法進行維護和擴充套件。而工廠模式相較之於簡單工廠模式更為複雜,工廠模式對工廠類進行了詳細的子類化,為每乙個演算法都建立了獨立的工廠,這樣的優點在於可以在演算法擴充套件的時候避免修改總工廠類,而只要生成相應的子類就可以了,盡可能避免了違背「開閉原則」的情況,但缺點在於這樣switch一類的條件判斷就必須從原來的工廠類搬到了客戶端。下面我們通過乙個和當時在簡單工廠模式章節一樣的計算器演算法的例子實現一下工廠模式。
//運算子操作類
class operation;};
//總工廠類
class ifactory
;//加法操作類
class addoperation : public operation
};//減法操作類
class suboperation : public operation
};//乘法操作類
class muloperation : public operation
};//除法操作類
class divoperation : public operation
};//加法工廠類
class addopfactory : public ifactory
};//減法工廠類
class subopfactory : public ifactory
};//乘法工廠類
class mulopfactory : public ifactory
};//除法工廠類
class divopfactory : public ifactory
};
////////////////////////////
//// @author : peterzheng
// @filename : fmdemo.cpp
// @date : 2018-08-13 19:50
//////////////////////////////
#include "factorymodedefine.h"
int main(void)
op = ft->createfactory();
op->_numbera = _numbera;
op->_numberb = _numberb;
op->result = op->getresult();
std::cout << op->result << std::endl;
system("pause");
return 0;
}
C 設計模式 工廠模式
可以方便的使用繼承來實現建立方法的多樣性,區別於使用靜態方法定義簡單工廠。工廠方法模式 定義了乙個建立物件的介面,但由於子類決定要例項化的類是哪乙個。工廠方法讓類把例項化推遲到了子類。依賴倒置原則 要依賴抽象,不要依賴具體類 以下指導方針將避免你再oo設計中違反依賴倒置原則 盡量達到這個原則,不一定...
C 設計模式 工廠模式
建立型模式,提供了一種建立物件的最佳方式。在工廠模式中,我能在建立物件時不會對客戶端暴露建立邏輯,並且通過使用乙個公用的介面來指向新建立的物件。我們將建立乙個 shape 介面和實現 shape 介面的實體類。下一步是定義工廠類 shapefactory。factorypatterndemo,我們的...
C 設計模式 工廠模式
目錄 基本概念 及例項 工廠方法模式 factory method 定義乙個用於建立物件的介面,讓字類決定例項化哪乙個類。工廠方法使乙個類的例項化延遲到其子類 簡單工廠模式的最大優點在使用者工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關的類,對於客戶端來說,去除了具體產品的依賴。工...