首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 設計模式實戰:Flyweight 享元模式完整解析(二)

     編輯:關於C語言

程式碼執行結果

使用享元模式:
享元模式記憶體使用

未使用享元模式:
非享元模式記憶體使用

代碼角色說明

  • ModelFactory:Flyweight Factory,單例模式管理享元池,Hashtable 記錄已載入模型
  • Model:Flyweight,建構時從檔案載入資料至欄位
  • Client:Program.Main,隨機請求 10,000 次模型(僅 2 種)

效能對比數據

  • 享元模式:僅 2 個 Model 實例,記憶體增長極小
  • 非享元:10,000 個 Model 實例,9,998 個為重複可共享
  • GC.GetTotalMemory() 直觀展示記憶體差異

採用時機

  • 系統存在大量細粒度物件佔用大量記憶體
  • 外部觀察者無法區分這些物件(或經改造可無差別)

實現要點

  • 享元工廠維護享元實例表
  • 享元不可共享狀態(外部狀態)由 Client 維護
  • 依需求對享元角色抽象化

注意事項

  • 不適用場景:物件擁有大量獨立狀態、非細粒度物件
  • 權衡成本:享元池本身佔用資源,若享元資源較小或實例數與池規模接近,得不償失
  • 關鍵在權衡:記憶體節省 vs 管理複雜度/額外開銷
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved