軟體領域中的設計模式的重要性不言而喻。設計模式中運用了物件導向程式設計語言的重要特性:封裝、繼承、多型。雖然知道這些特性的定義但是並沒有做到真正的理解,這樣特性有什麼作用?用於什麼場合中等等問題,帶著疑問開始學習設計模式,主要參考《大話設計模式》和《設計模式:可復用物件導向軟體的基礎》兩本書。
工廠模式:定義乙個建立物件介面,讓子類決定例項化哪乙個類,在下圖中就是定義了乙個建立了物件的介面ifactory,讓它的兩個子類sqlserve***ctory、accessfactory去決定例項化sqlserveruser還是accessuser。
抽象工廠:定義了乙個建立一系列相關或相互依賴物件的介面,而無需指定它們的具體類。下圖中可知定義了乙個建立一系列相關或者相互依賴的介面ifactory,它的每個子類建立了一系列相關的或者相互依賴的物件,根據子類建立的物件去例項化某個類。
抽象工廠的結構圖如下:
抽象工廠模式 例:
#include #include #include using namespace std;
//使用者抽象介面
class iuser
;//部門抽象介面
class idepartment
;//access使用者
class caccessuser : public iuser
virtual void insertuser() };
//access部門
class caccessdepartment : public idepartment
virtual void insertdepartment() };
//sql使用者
class csqluser : public iuser
virtual void insertuser() };
//sql部門類
class csqldepartment : public idepartment
virtual void insertdepartment() };
//抽象工廠
class ifactory
;//access工廠
class accessfactory : public ifactory
virtual idepartment* createdepartment() };
//sql工廠
class sqlfactory : public ifactory
virtual idepartment* createdepartment() };
//客戶端:
int main()
設計模式C 實現十一 抽象工廠模式
抽象工廠模式 abstract factory 提供乙個建立一系列相關或者相互依賴物件的介面,而無需指定他們具體的類。優點 便於交換產品系統,由於具體工廠類,在乙個應用中只需要初始化的時候出現一次,這就使得改變乙個應用的具體工廠變得非常容易,只需要改變具體工廠即可以使用不同的產品配置。它讓具體的建立...
抽象工廠模式 常用設計模式 抽象工廠模式
提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。在工廠方法模式中,我們的具體建立者每次使用都只能建立乙個同型別的物件,假如我們現在需要的是多個不同型別的物件,工廠方法就滿足不了需求了。這時我們可以把多個工廠方法組合到乙個類,這就是抽象工廠模式,它就是專門用來建立多個產品,也可以說...
抽象工廠模式 設計模式(九) 抽象工廠模式
提供乙個為建立一組相關或相互依賴物件的介面,且無須指定它們的具體類。它屬於建立型模式。在抽象工廠模式中,每個具體工廠都提供了多個用於建立多種不同型別具體物件的方法,這些不同型別的物件都存在乙個共同的屬性,構成乙個族。上篇文章設計模式 八 工廠方法模式說到工廠方法模式中只考慮某一類產品的生產,例如可樂...