設計模式之享元模式

2021-10-24 02:22:32 字數 943 閱讀 2815

享元模式:運用共享技術來有效的支援大量細粒度的物件,常用於系統底層的開發,解決系統的效能問題。比如資料庫連線池,裡面有建立好的直接使用,如果沒有則新建立乙個。享元模式解決重複物件記憶體浪費問題,當系統中有大量相似的物件,需要緩衝池時,不需要建立新的物件,可以直接從池子裡面拿,這樣降低系統記憶體,提高效率。享元模式最經典的是池技術,string常量池,資料庫連線池,緩衝池等都是享元模式的應用。

內部狀態和外面狀態:比如走圍棋和五子棋只有黑白兩種顏色,棋子的顏色是固定的,但是走法千變萬化。棋子的顏色是內部狀態,棋子之間的位置這是外部狀態。

享元模式提出兩個要求:細粒度和共享物件,對應的涉及內部狀態和外部狀態,

內部狀態指物件共享出來的資訊,儲存在享元物件內部且不會隨著環境的改變而改變。

外部狀態指的是物件得以依賴的標記,會隨著環境的改變而改變,不可共享的狀態。

}//獲取**分類的資料

public int getwebsitecount()

/*** 使用享元模式來解決**共享的問題

* @author administrator**/

public class client {

注意事項:

設計模式之享元模式

1 享元模式運用共享技術有效地支援大量細粒度的物件。uml圖如下 2 思考 flyweight根據客戶需求返回已經生成好的物件,但一定要事先生成物件例項嗎?答 實際上是不一定需要的,完全可以初始化的時候什麼也不做,到需要的時候,再去判斷物件是否為null來決定是否例項化。3 思考 為什麼要有unsh...

設計模式之 享元模式

享元模式英文稱為 flyweight pattern 又譯為羽量級模式或者蠅量級模式。享元模式的定義為 採用乙個共享類來避免大量擁有相同內容的 小類 的開銷。這種開銷中最常見 直觀的影響就是增加了記憶體的損耗。享元模式以共享的方式高效的支援大量的細粒度物件,減少其帶來的開銷。在名字和定義中都體現出了...

設計模式之享元模式

享元模式運用共享技術有效地支援大量細粒度的物件。如果乙個應用程式使用了大量的物件,而大量的這些物件造成了很大的儲存開銷時應該考慮使用。物件的大多數狀態可以是外部狀態,如果刪除物件的外部狀態,那麼可以用相對較少的共享物件取代很多組物件,此時也可以考慮用享元模式。享元模式uml圖如下 如下 使用者 cl...