複合享元結構 (UML)

五大角色
- Flyweight (抽象享元):定義公共介面,需外在狀態的方法以參數傳入。不強制共享。
- ConcreteFlyweight (具體享元):實作介面,儲存內在狀態 (與環境無關),可共享。亦稱單純具體享元。
- UnsharableFlyweight (複合享元):不可共享,但可分解為多個單純享元組合。由合成模式構建。
- FlyweightFactory (享元工廠):建立/管理享元,檢查現有實例決定重用或新建。
- Client (客戶端):維護享元引用,自行儲存所有外在狀態。
注意
複合享元結合享元 + 合成模式,確保同一複合享元內的所有單純享元擁有相同外在狀態,內在狀態各異。程式碼較複雜,詳見《Java與模式》第 31 章。