簡介
Flyweight Pattern(享元模式)是一種結構型設計模式,透過共用物件來減少記憶體使用。
問題
當系統中有大量相似物件時,導致記憶體消耗過大。
解決方案
將可共用的狀態抽離,讓多個物件共用同一份資料。
C# 範例
public class Flyweight {
public string IntrinsicState { get; private set; }
public Flyweight(string state) { IntrinsicState = state; }
public void Operation(string extrinsicState) {
Console.WriteLine($"Intrinsic: {IntrinsicState}, Extrinsic: {extrinsicState}");
}
}
public class FlyweightFactory {
private Dictionary<string, Flyweight> _flyweights = new();
public Flyweight GetFlyweight(string key) {
if (!_flyweights.ContainsKey(key))
_flyweights[key] = new Flyweight(key);
return _flyweights[key];
}
}
結論
Flyweight Pattern 適合大量重複物件的場景,可大幅降低記憶體消耗。