簡介

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 適合大量重複物件的場景,可大幅降低記憶體消耗。