享元模式
定義:
享元模式(flyweight
),運用共享技術有效的支援大量細粒度
的物件。
享元模式結構圖:
兌現**:
#include #include #include "map"
using namespace std;
class person
virtual void print()=0;
protected:
string m_name;
int m_age;
};class teacher:public person
void print() }
person* getteacher(string id)
else//有,這幾返回此物件例項
return tmp;
}private:
mapmap1;
};void main()
{ person *p1 =null;
person *p2 =null;
flyweightteache***ctory *fwtf = new flyweightteache***ctory;
p1=fwtf->getteacher("001");
p2=fwtf->getteacher("001");
p1->print();
p2->print();
delete fwtf;
cout總結:
可以共享的物件,也就是說返回的同一型別的物件其實是同一例項,當客戶端要求生成乙個物件時,工廠會檢測是否存在此物件的例項,如果存在那麼直接返回此物件例項,如果不存在就建立乙個例項並儲存起來。通常工廠類會有乙個集合型別的成員變數來用以儲存物件,如map,hashtable,vector等。
C 設計模式之享元模式
英文 flyweight 運用共享技術有效的支援大量細粒度的物件 拿書上的例子來說,如果100家企業來找你做 難道要去申請100個空間,用100個資料庫來貼上100遍同樣的 嗎?肯定不可以,增多,例項也隨著增多,這對伺服器的資源浪費的很嚴重。如果大家的 共享一套 只要使用者id不同,可以區分不同的客...
c 設計模式之享元模式
享元模式運用共享技術有效地支援大量細粒度的物件。在享元物件內部並且不會隨環境改變而改變的共享部分,稱為享元物件的內部狀態,而隨環境改變而改變 不可以共享的狀態就是外部狀態。在享元模式 flyweight 內部狀態儲存於物件之中,而外部狀態則應該考慮由客戶端物件儲存或計算,再呼叫該物件的時候,將對應的...
C 設計模式之享元模式
下面有兩篇部落格,作為參考。設計模式本來就是一種思想,光看抽象的設計模式 可以搜尋到很多c 設計模式之享元模式的抽象 很難理解,上面兩篇例子給出來的不錯。結合我的理解說幾點我的思考 1 享元模式是一種結構型的設計模式,甚至可以說是就是包含了乙個factory模式,factory產出的product是...