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

2021-10-05 19:43:48 字數 881 閱讀 6254

享元模式

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

2.方法:運用共享技術有效地支援大量細粒度的物件。

3.主要解決:在有大量物件時,有可能會造成記憶體溢位,我們把其中共同的部分抽象出來,如果有相同的業務請求,直接返回在記憶體中已有的物件,避免重新建立。

4.何時使用

(1)系統中有大量物件。

(2)這些物件消耗大量記憶體。

(3)這些物件的狀態大部分可以外部化。

(4)這些物件可以按照內蘊狀態分為很多組,當把外蘊物件從物件中剔除出來時,每一組物件都可以用乙個物件來代替。

(5)系統不依賴於這些物件身份,這些物件是不可分辨的。

5.如何解決:用唯一標識碼判斷,如果在記憶體中有,則返回這個唯一標識碼所標識的物件。

6.關鍵部分:用 hashmap 儲存這些物件。

7.優點:大大減少物件的建立,降低系統的記憶體,使效率提高。

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

9.注意事項

(1)注意劃分外部狀態和內部狀態,否則可能會引起執行緒安全問題。

(2)這些類必須有乙個工廠物件加以控制。

10.實現

設計模式學習筆記 享元模式

享元模式英文叫flyweight pattern。flyweight,應該是乙個來自於拳擊術語,最輕量級,也叫蠅量級。次奧,我看 大話設計模式 這本書的時候,一直錯看成 亨元模式,搞不懂為什麼叫這個名字。現在看清楚了,是享元,共享的享,就比較好理解了。享元模式,就是共享 重用一些現成的物件,免得構造...

14 享元模式

享元模式 flyweight pattern 主要用於減少建立物件的數量,以減少記憶體占用和提高效能。這種型別的設計模式屬於結構型模式,它提供了減少物件數量從而改善應用所需的物件結構的方式。享元模式嘗試重用現有的同類物件,如果未找到匹配的物件,則建立新物件。使用該模式的關鍵是將享元的內蘊狀態 可以共...

設計模式之享元模式學習筆記

享元模式是池技術 string常量池 資料庫連線池 緩衝池等 的重要實現方式,可以減少應用程式建立物件,降低程式記憶體的占用,提高效能。使用共享物件,有效的大量細粒度的物件 1.flyweight 抽象享元角色,同時定義出物件的外部和內部狀態的介面或實現 2.concreteflyweight 具體...