定義:use sharing to support large numbers of fine-grained objects efficiently。(使用共享物件可有效地支援大量的細粒度的物件。)
享元模式的定義為我們提出了兩個要求:細粒度的物件和共享物件。要求細粒度物件,那麼不可避免地使得物件數量多且性質相近,那我們就將這些物件的資訊分為兩個部分:內部狀態(intrinsic)與外部狀態(extrinsic)。
享元模式的通用類圖如圖所示。
我們先來看我們享元模式角色名稱。
享元模式的目的在於運用共享技術,使得一些細粒度的物件可以共享,我們的設計確實也應該這樣,多使用細粒度的物件,便於重構或重用。
享元模式是乙個非常簡單的模式,它可以大大減少應用程式建立的物件,降低程式記憶體的占用,增強程式的效能,但它同時也提高了系統複雜性,需要分離外部狀態和內部狀態,而且外部狀態具有固化特性,不應該隨內部狀態改變而改變,否則導致系統的邏輯混亂。
設計模式之享元模式
1 享元模式運用共享技術有效地支援大量細粒度的物件。uml圖如下 2 思考 flyweight根據客戶需求返回已經生成好的物件,但一定要事先生成物件例項嗎?答 實際上是不一定需要的,完全可以初始化的時候什麼也不做,到需要的時候,再去判斷物件是否為null來決定是否例項化。3 思考 為什麼要有unsh...
設計模式之 享元模式
享元模式英文稱為 flyweight pattern 又譯為羽量級模式或者蠅量級模式。享元模式的定義為 採用乙個共享類來避免大量擁有相同內容的 小類 的開銷。這種開銷中最常見 直觀的影響就是增加了記憶體的損耗。享元模式以共享的方式高效的支援大量的細粒度物件,減少其帶來的開銷。在名字和定義中都體現出了...
設計模式之享元模式
享元模式運用共享技術有效地支援大量細粒度的物件。如果乙個應用程式使用了大量的物件,而大量的這些物件造成了很大的儲存開銷時應該考慮使用。物件的大多數狀態可以是外部狀態,如果刪除物件的外部狀態,那麼可以用相對較少的共享物件取代很多組物件,此時也可以考慮用享元模式。享元模式uml圖如下 如下 使用者 cl...