抽象工廠模式與單件模式C 混合實現

2021-09-25 12:49:15 字數 2990 閱讀 4709

當每個抽象產品都有多於乙個的具體子類的時候,工廠角色怎麼知道例項化哪乙個子類呢?比如每個抽象產品角色都有兩個具體產品。抽象工廠模式提供兩個具體工廠角色,分別對應於這兩個具體產品角色,每乙個具體工廠角色只負責某乙個產品角色的例項化。每乙個具體工廠類只負責建立抽象產品的某乙個具體子類的例項。

singleton就是確保乙個類只有唯一的乙個例項。singleton主要用於物件的建立,這意味著,如果某個類採用了singleton模式,則在這個類被建立後,它將有且僅有乙個例項可供訪問。很多時候我們都會需要singleton模式,最常見的比如我們希望整個應用程式中只有乙個連線資料庫的connection例項;又比如要求乙個應用程式中只存在某個使用者資料結構的唯一例項。我們都可以通過應用singleton模式達到目的。

具體請看:

該公司資料庫擁有三張表,分別是使用者表、部門表和專案表。每張表的操作都支援查詢和新增功能。資料庫支援mysql和sql server兩種。結合抽象工廠模式和單件模式給出該系統的模擬**。

在抽象工廠模式中,乙個應用裡一般每個產品只需要乙個具體工廠的例項,因此,工廠通常最好用單件模式實現。實驗要求結合抽象工廠模式和單件模式,模擬公司資料庫建立過程。

"error, 抽象工廠例項已有!"

<

return factory;

}private:

sqlserve***ctory()

static sqlserve***ctory* factory;};

sqlserve***ctory* sqlserve***ctory:

:factory =

null;

class mysqlfactory: public ifactory

iuser*

createuser()

idepartment*

createdepartment()

iproject*

createproject()

static ifactory *

getinstance()

else cout<<

"error, 抽象工廠例項已有!"

注意第二行是再次生成乙個mysql的工廠,但是由於只能有乙個,因此不能再次建立。

注意使用單件模式寫mysql和sql server的具體工廠時,只能對自身單件,即生成乙個mysql工廠時,不能再次生成第二個mysql工廠,但是可以生成sql server工廠。

當使用單件模式時,具體工廠的建構函式需要放在private中,這樣客戶端不能隨意建立多個工廠。在public中需要增加getinstance函式用來判斷是否生成了工廠,如果存在,則不能建立第二個,注意這是static型別。

具體工廠的指標需要在類外部全域性部分進行初始化為null。

c 工廠模式與抽象工廠模式。

工廠模式與抽象工廠模式,相信同行不會陌生 在網上及相關書裡面也看過這方面的介紹 推薦這兩本書 steven john metsker s design patterns in c 和 gof s design pattern framework2.0 今天抽點時間,寫點這方面的東西,希望能起到一點拋...

c 工廠模式與抽象工廠模式

原始出處 作者資訊和本宣告。否則將追究法律責任。工廠模式與抽象工廠模式,相信同行不會陌生 在網上及相關書裡面也看過這方面的介紹 推薦這兩本書 steven john metsker s design patterns in c 和 gof s design pattern framework2.0 ...

c 工廠模式與抽象工廠模式

工廠模式與抽象工廠模式,相信同行不會陌生 在網上及相關書裡面也看過這方面的介紹 推薦這兩本書 steven john metsker s design patterns in c 和 gof s design pattern framework2.0 今天抽點時間,寫點這方面的東西,希望能起到一點拋...