c 設計模式之享元模式

2021-07-15 15:23:31 字數 1071 閱讀 4854

享元模式

定義:

享元模式(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是...