單例模式:
保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。、
結構圖:
注意多執行緒的單例。
享元模式:
享元的英文是flyweight,它是乙個來自於體育方面的專業用語,在拳擊、摔跤和舉重比賽中特指最輕量的級別。把這個單詞移植到軟體工程裡面,也是用來表示特別小的物件,即細粒度物件。flyweight享元,可以理解為共享元物件,也就是共享細粒度物件。享元模式就是通過使用共享的方式,達到高效地支援大量的細粒度物件。它的目的就是節省占用的空間資源,從而實現系統效能得到改善。
享元模式主要作用是實現物件的共享,即使用共享池,從而減少記憶體分配的開銷。享元模式通常與工廠模式一起使用,它包含了多個共享的組合物件,因此:享元模式=單例模式+工廠模式+合成模式,其結構如圖12-25所示。
其中:flyweightfactoiy享元工廠負責建立和管理享元物件,它必須保證享元物件可以被系統適當共享。當乙個客戶端物件請求乙個享元物件的時候,享元工廠需要檢查系統中是否已經有乙個符合要求的享元物件,如果已經有了,享元工廠就應當提供這個已有的享元物件;如果系統中沒有乙個適當的享元物件的話,享元工廠就應當建立乙個新的合適的享元物件。flyweight是所有的具體享元類的超類,為這些類規定出需要實現的公共介面或抽象類。myflyweight1和myflyweight2則是實現抽象享元所規定的介面。
設計模式之享元模式
1 享元模式運用共享技術有效地支援大量細粒度的物件。uml圖如下 2 思考 flyweight根據客戶需求返回已經生成好的物件,但一定要事先生成物件例項嗎?答 實際上是不一定需要的,完全可以初始化的時候什麼也不做,到需要的時候,再去判斷物件是否為null來決定是否例項化。3 思考 為什麼要有unsh...
設計模式之 享元模式
享元模式英文稱為 flyweight pattern 又譯為羽量級模式或者蠅量級模式。享元模式的定義為 採用乙個共享類來避免大量擁有相同內容的 小類 的開銷。這種開銷中最常見 直觀的影響就是增加了記憶體的損耗。享元模式以共享的方式高效的支援大量的細粒度物件,減少其帶來的開銷。在名字和定義中都體現出了...
設計模式之享元模式
享元模式運用共享技術有效地支援大量細粒度的物件。如果乙個應用程式使用了大量的物件,而大量的這些物件造成了很大的儲存開銷時應該考慮使用。物件的大多數狀態可以是外部狀態,如果刪除物件的外部狀態,那麼可以用相對較少的共享物件取代很多組物件,此時也可以考慮用享元模式。享元模式uml圖如下 如下 使用者 cl...