享元模式運用共享技術有效地支援大量細粒度物件的復用。系統只使用少量的物件,而這些物件都很相似,狀態變化很小,可以實現物件的多次復用。
很多網路裝置都是支援共享的,比如交換機和集線器等,多台計算機終端可以連線同一臺網路裝置,並通過該網路裝置進行資料**。
如類圖可知,裝置工廠的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 內部狀態儲存於物件之中,而外部狀態則應該考慮由客戶端物件儲存或計算,再呼叫該物件的時候,將對應的...