14 享元模式

2021-09-12 16:34:14 字數 1268 閱讀 5715

享元模式(flyweight pattern)主要用於減少建立物件的數量,以減少記憶體占用和提高效能。這種型別的設計模式屬於結構型模式,它提供了減少物件數量從而改善應用所需的物件結構的方式。

享元模式嘗試重用現有的同類物件,如果未找到匹配的物件,則建立新物件。使用該模式的關鍵是將享元的內蘊狀態(可以共享)即外蘊狀態(不可以共享)區分開來。

優點:大大減少物件的建立,降低系統的記憶體,使效率提高,且使用享元技術可以有效地支援大量細粒度的物件。

缺點:提高了系統的複雜度,需要分離出外部狀態和內部狀態,而且外部狀態具有固有化的性質,不應該隨著內部狀態的變化而變化,否則會造成系統的混亂。

類圖如下:

示例**如下:

#include #include #include using namespace std;

/* 抽象享元基類 */

class flyweight

virtual void operation(const string&state)

string getstate()const

virtual ~flyweight()

private:

string _state;

};/* 具體享元子類 */

class concreteflyweight :public flyweight

void operation(const string& state)

};/* 具體工廠類,對享元物件進行統一管理 */

class flyweightfactory

}flyweight *fn = new concreteflyweight(key);

_flys.push_back(fn);

return fn;

}private:

std::vector_flys;

};int main()

執行結果如下:

設計模式學習筆記(14) 享元模式

享元模式 1.介紹 享元模式 flyweight pattern 主要用於減少建立物件的數量,以減少記憶體占用和提高效能。這種型別的設計模式屬於結構型模式,它提供了減少物件數量從而改善應用所需的物件結構的方式。2.方法 運用共享技術有效地支援大量細粒度的物件。3.主要解決 在有大量物件時,有可能會造...

設計模式(享元模式)

享元模式是設計模式中少數幾個已提高系統效能為目的模式之一。它的核心思想是 如果系統存在多個 相同的物件,那麼只需要共享一分物件的拷貝,而不必為每一次使用都建立新的物件。當有物件被大量復用時,特別是重量級的物件復用可以使用享元模式來提高系統效能。其優點如下 1.可以節省重複建立物件的開銷,因為被享元模...

設計模式 享元模式

享元模式flyweight flyweight 模式是乙個提高程式效率和效能的模式 會大大加快程式的執行速度。把物件中使用比較多,具有共同點的,拿出來做成乙個共享類,這樣就行成了共享模式。如 integer 物件在 128 127 使用的是同乙個物件。在這之間是共享的。享元中的角色 flyweigh...