前言
設(shè)計(jì)模式系列代碼均持續(xù)更新在我的gitHub:to github
I. 組合模式簡(jiǎn)介
又叫作整體-部分(Part-Whole)模式,它是一種將對(duì)象組合成樹狀的層次結(jié)構(gòu)的模式,用來(lái)表示“整體-部分”的關(guān)系,使用戶對(duì)單個(gè)對(duì)象和組合對(duì)象具有一致的訪問(wèn)性,屬于結(jié)構(gòu)型設(shè)計(jì)模式。
II. 組合模式包含以下角色
- 抽象構(gòu)件(Component)角色:它的主要作用是為樹葉構(gòu)件和樹枝構(gòu)件聲明公共接口,并實(shí)現(xiàn)它們的默認(rèn)行為。在透明式的組合模式中抽象構(gòu)件還聲明訪問(wèn)和管理子類的接口;在安全式的組合模式中不聲明訪問(wèn)和管理子類的接口,管理工作由樹枝構(gòu)件完成。(總的抽象類或接口,定義一些通用的方法,比如新增、刪除)
- 樹枝構(gòu)件(Composite)角色 / 中間構(gòu)件:是組合中的分支節(jié)點(diǎn)對(duì)象,它有子節(jié)點(diǎn),用于繼承和實(shí)現(xiàn)抽象構(gòu)件。它的主要作用是存儲(chǔ)和管理子部件,通常包含 Add()、Remove()、GetChild() 等方法。
- 樹葉構(gòu)件(Leaf)角色:是組合中的葉節(jié)點(diǎn)對(duì)象,它沒(méi)有子節(jié)點(diǎn),用于繼承或?qū)崿F(xiàn)抽象構(gòu)件。
III. 組合模式類圖示例

IV. 組合模式使用場(chǎng)景
- 數(shù)據(jù)具有樹形結(jié)構(gòu)
- 整體數(shù)據(jù)要保證一致性