簡述:
享元模式:運用共享技術有效地支援大量細粒度的物件。
享元模式包括:享元工廠類、享元介面類、具體享元類
享元工廠類: 用來建立並管理享元介面類物件,它主要使用來確保合理地共享享元介面類,當使用者請求乙個享元介面類物件時,享元工廠類物件提供乙個已建立的例項或者建立乙個(不存在的話)
享元介面類:所有具體享元類的超類或介面,通過這個介面可以接受並作用於外部狀態。
具體享元類:指那些不需要共享的享元介面類的子類,因為享元介面類共享成為可能,但它並不強制共享。
享元模式:
1 #include 2 #include 3輸出結果:using
namespace
std;45
//享元介面類
6class
cflyweight7;
1112
//具體享元類
13class cconcreteflyweight : public
cflyweight
1417
};18
19//
不需要共享的享元子類
20class cunsharedconcreteflyweight : public
cflyweight
2124
};25
26//
享元工廠類
27class
cflyweightfactory
2839
40 ~cflyweightfactory()
4150
51 ++ite;52}
5354
m_mapflyweights.clear();55}
5657 cflyweight* getflyweight(string szkey)
58};
5960
61int
main()
62
例:**共享**
**如下:
1 #include 2 #include 3using
namespace
std;45
//使用者類
6class
cuser713
14string getname()
15};
1617
//**基類(享元介面類)
18class
cwebsite19;
2324
//具體**類(具體享元類)
25class cconcretewebsite : public
cwebsite
2632
33virtual
void use(cuser* puser)
34};
3536
//**工廠類(享元工廠類)
37class
cwebsitefactory
3853 ++ite;54}
55m_mapwebsites.clear();56}
5758
//獲得**分類
59 cwebsite* getwebsitecategory(string
szkey)
6066
67//
獲得**分類總數
68int getwebsitecount()
69};
7071
72int
main()
73
《大話設計模式》讀書筆記 第26章 享元模式
1 享元模式 flyweight 運用共享技術有效地支援大量細粒度的物件。2 享元模式 flyweight 結構圖 3 內部狀態與外部狀態 在享元物件內部並且不會隨環境改變而改變的共享部分,可以稱為是享元物件的內部狀態,而隨環境改變而改變的 不可以共享的狀態就是外部狀態了。4 事實上,享元模式可以避...
《大話設計模式》 第26個 享元模式
享元模式目的是為了減少物件例項化的個數,已達到減少物件占用記憶體的目的。他建立物件是通過工廠建立的,在工廠類中建立物件時,會先判斷此物件是否已經存在,如果不存在則建立物件,如果存在則返回已經存在的物件,這是享元模式的核心部分。對於物件間的不同部分,則採用引數傳遞的方式將不同部分傳進類的處理函式。如下...
設計模式(享元模式)
享元模式是設計模式中少數幾個已提高系統效能為目的模式之一。它的核心思想是 如果系統存在多個 相同的物件,那麼只需要共享一分物件的拷貝,而不必為每一次使用都建立新的物件。當有物件被大量復用時,特別是重量級的物件復用可以使用享元模式來提高系統效能。其優點如下 1.可以節省重複建立物件的開銷,因為被享元模...