設計模式之享元模式例項(c )

2021-09-23 08:02:09 字數 1295 閱讀 5583

享元模式運用共享技術有效地支援大量細粒度物件的復用。系統只使用少量的物件,而這些物件都很相似,狀態變化很小,可以實現物件的多次復用。

很多網路裝置都是支援共享的,比如交換機和集線器等,多台計算機終端可以連線同一臺網路裝置,並通過該網路裝置進行資料**。

如類圖可知,裝置工廠的arraylist儲存著網路裝置唯一例項,並可由其他終端共享他們。

下面是c++版本的實現

抽象享元類networkdevice

//抽象享元類networkdevice

class networkdevice;

具體享元類switch

//具體享元類switch

class switch : public networkdevice

string gettype()

void use()

private:

string type;

};

具體享元類hub

//具體享元類hub

class hub : public networkdevice

string gettype()

void use()

private:

string type;

};

享元類工廠類devicefactory

//享元類工廠類devicefactory

class devicefactory

shared_ptrgetnetworkdevice(string type)else }

int gettotaldevice()

int gettotalterminal()

private:

map> devices;

int totalterminal = 0;

};

客戶端測試

//客戶端測試 

int main(void)

輸出結果

c 設計模式之享元模式

享元模式 定義 享元模式 flyweight 運用共享技術有效的支援大量細粒度 的物件。享元模式結構圖 兌現 include include include map using namespace std class person virtual void print 0 protected str...

C 設計模式之享元模式

英文 flyweight 運用共享技術有效的支援大量細粒度的物件 拿書上的例子來說,如果100家企業來找你做 難道要去申請100個空間,用100個資料庫來貼上100遍同樣的 嗎?肯定不可以,增多,例項也隨著增多,這對伺服器的資源浪費的很嚴重。如果大家的 共享一套 只要使用者id不同,可以區分不同的客...

c 設計模式之享元模式

享元模式運用共享技術有效地支援大量細粒度的物件。在享元物件內部並且不會隨環境改變而改變的共享部分,稱為享元物件的內部狀態,而隨環境改變而改變 不可以共享的狀態就是外部狀態。在享元模式 flyweight 內部狀態儲存於物件之中,而外部狀態則應該考慮由客戶端物件儲存或計算,再呼叫該物件的時候,將對應的...