1.工廠模式和抽象工廠:
貌似是為了避免靜態的new,以後擴充套件時**修改的比較少,還有就是使用者在構造物件時避免準備複雜的引數,使用工廠模式可以讓**在執行時決定具體構造物件的型別。
因此除了不同種類的需要有個抽象基類以外,工廠也要有個抽象的基類工廠,全部依賴於抽象。
class mainform : public form
void button1_click()
};
抽象工廠的不同之處就在於把一系列有關聯的類塞到一起構造,防止一些邏輯上的問題。
2.享元模式:
如果程式中要使用大量細粒度的物件,但是其中又有很多內容相同的東西,這時候為了節省記憶體開銷,可以是使用享元模式,感覺主要目的類似於smartpoint的計數器,也是為了節省空間,不過為了達到同樣的目的,享元模式的實現手段有很多。課程裡介紹的是使用map,這樣的話相同的key會返回同乙個物件內容,如果key不存在再新建。
class font };ß
class fontfactory
else
}void clear()
};
不過說實話感覺還是需要乙個key去輔助,和想象的有點不一樣,但是享元的做法,要節省空間的話,必須要話費額外的時間去訪問和控制,也是沒辦法的吧 Boolan 設計模式 2
主要內容 本節主要講物件建立和介面隔離各四種設計模式。1.物件建立模式 1.1 工廠模式 isplitter splitter new binarysplitter 這樣寫是編譯時的依賴具體類,違反依賴倒置原則。mainform只依賴於抽象的isplitter和splitte ctory,並不依賴於...
Boolan 設計模式 3
物件效能 模式 解決物件建立代價問題 1.單件模式 c 11後跨平台實現,遮蔽編譯器對記憶體的reorder std atomicsingleton m instance singleton tmp m instance.load std memory order relaxed 取變數。std a...
設計模式學習(二) Proxy模式
proxy模式 意圖 為其他物件提供一種 以控制目標物件的訪問。此模式的目的 由於直接訪問控制的不便是而設定的一控制 uml結構圖 proxy 模式根據種類不同,效果也不盡相同 1 遠端 remote 為乙個位於不同的位址空間的物件提供乙個局域代表物件。這個不同的位址空間可以是在本機器中,也可是在另...