練習原始碼:
參考內容:
簡說設計模式——享元模式:
23種設計模式全解析:
享元模式的主要目的是實現物件的共享,即共享池,當系統中物件多的時候可以減少記憶體的開銷,通常與工廠模式一起使用。
flyweightfactory負責建立和管理享元單元,當乙個客戶端請求時,工廠需要檢查當前物件池中是否有符合條件的物件,如果有,就返回已經存在的物件,如果沒有,則建立乙個新物件。flyweight是超類。
享元模式使用:共享的一些物件,他們有一些共有的屬性。將上述類似屬性作為內部資料,其它的作為外部資料。在方法呼叫時,當做引數傳進來,這樣就節省了空間,減少了例項的數量。
舉例說明:
比如說說圍棋和跳棋,它們都有大量的棋子物件,圍棋和五子棋只有黑白兩色,跳棋顏色略多一點,但也是不太變化的,所以棋子顏色就是棋子的內部資料;而各個棋子之間的差別就是位置的不同,所以方位座標就是棋子的外部資料。
那麼為什麼這裡要用享元模式呢?可以想象一下,上面提到的棋類遊戲的例子,比如圍棋,理論上有361個空位可以放棋子,常規情況下每盤棋都有可能有兩三百個棋子物件產生,因為記憶體空間有限,一台伺服器很難支援更多的玩家玩圍棋遊戲,如果用享元模式來處理棋子,那麼棋子物件就可以減少到只有兩個例項,這樣就很好的解決了物件的開銷問題。
23種設計模式(享元模式)
享元 flyweight 模式的定義 運用共享技術來有效地支援大量細粒度物件的復用。它通過共享已經存在的物件來大幅度減少需要建立的物件數量 避免大量相似類的開銷,從而提高系統資源的利用率。1.結構需求 1.抽象享元角色 flyweight 是所有的具體享元類的基類,為具體享元規範需要實現的公共介面,...
23種設計模式 19 享元模式
目錄 一享元模式簡介brief introduction 二解決的問題what to solve 三享元模式分析analysis 享元模式結構 例項執行結果 四享元模式例項分析example 場景 例項執行結果 五總結summary 原文 享元模式 flyweight pattern 運用共享技術有...
C 設計模式(12)享元模式
1.解決物件復用問題 2.不破壞原本類的封裝 3.池化資源管理 避免物件重複建立和銷毀 尤其是非託管資源 4.字串 記憶體分配使用是享元模式 排除部分分配 實現 namespace flyweightpattern class lettera iletter has been created pub...