0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

設(shè)計(jì)模式結(jié)構(gòu)性:組合模式

冬至子 ? 來(lái)源:碼農(nóng)架構(gòu) ? 作者:小智 ? 2023-06-08 10:34 ? 次閱讀

組合模式(Composite Pattern),又叫部分整體模式,是用于把一組相似的對(duì)象當(dāng)作一個(gè)單一的對(duì)象。

組合模式依據(jù)樹形結(jié)構(gòu)來(lái)組合對(duì)象,用來(lái)表示部分以及整體層次。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它創(chuàng)建了對(duì)象組的樹形結(jié)構(gòu)。

這種模式創(chuàng)建了一個(gè)包含自己對(duì)象組的類。該類提供了修改相同對(duì)象組的方式。

我們通過(guò)下面的實(shí)例來(lái)演示組合模式的用法。實(shí)例演示了一個(gè)組織中員工的層次結(jié)構(gòu)。

結(jié)構(gòu)圖

圖片

角色與理解

  • 組合模式共分為三種角色:
  • Component (抽象構(gòu)件):葉子構(gòu)件與容器構(gòu)件共同繼承的父類或者是共同實(shí)現(xiàn)的接口,該角色中包含所有子類共有方法的聲明和實(shí)現(xiàn),在抽象構(gòu)件中定義了管理子構(gòu)件的方法,新增構(gòu)件、刪除構(gòu)件、獲取構(gòu)件。
  • Leaf (葉子構(gòu)件):表示葉子節(jié)點(diǎn),沒(méi)有子節(jié)點(diǎn),對(duì)于繼承父類的管理子節(jié)點(diǎn)的方法以拋出異常的方式處理。
  • Composite (容器構(gòu)件):表示容器節(jié)點(diǎn),包含子節(jié)點(diǎn),子節(jié)點(diǎn)可以是容器節(jié)點(diǎn)也可以是葉子節(jié)點(diǎn),其提供一個(gè)集合來(lái)對(duì)子節(jié)點(diǎn)進(jìn)行維護(hù),以迭代的方式對(duì)子節(jié)點(diǎn)進(jìn)行處理。
  • 組合模式的關(guān)鍵是抽象構(gòu)件類,它既可以表示葉子節(jié)點(diǎn)也可以表示容器節(jié)點(diǎn),對(duì)于客戶端而言是統(tǒng)一對(duì)抽象構(gòu)件進(jìn)行處理的,抽象構(gòu)件類和容器構(gòu)件類是聚合關(guān)聯(lián)的關(guān)系,抽象構(gòu)件類是容器構(gòu)件類的一部分,這樣容器構(gòu)件類對(duì)子構(gòu)件進(jìn)行處理時(shí)不用區(qū)分是葉子節(jié)點(diǎn)還是容器節(jié)點(diǎn),能夠統(tǒng)一的做處理

核心代碼

  • 抽象組件

圖片

  • 容器節(jié)點(diǎn)

圖片

  • 葉子節(jié)點(diǎn)

圖片

  • 客戶端

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • pattern
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    9620
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    模式 PFC + 電流模式 LLC 組合控制器

    1. 簡(jiǎn)介 [HR1211]是一款集成了多模式 PFC 和電流模式 HB LLC 的組合控制器,它性能卓越,具體參數(shù)請(qǐng)參閱 HR1211 數(shù)據(jù)手冊(cè)。 *附件:多模式 PFC + 電流
    的頭像 發(fā)表于 06-04 16:46 ?3082次閱讀
    多<b class='flag-5'>模式</b> PFC + 電流<b class='flag-5'>模式</b> LLC <b class='flag-5'>組合</b>控制器

    優(yōu)化電動(dòng)汽車的結(jié)構(gòu)性

    優(yōu)化電動(dòng)汽車的結(jié)構(gòu)性能以提高效率和安全迅速增長(zhǎng)的全球電動(dòng)汽車(EV)市場(chǎng)預(yù)計(jì)到2027年將達(dá)到8028億美元。在電池和高壓電子設(shè)備的驅(qū)動(dòng)下,電動(dòng)汽車的運(yùn)行和維護(hù)成本往往低于傳統(tǒng)汽車,幾乎不會(huì)產(chǎn)生
    發(fā)表于 09-17 08:10

    迷你組合音響的音場(chǎng)模式

    迷你組合音響的音場(chǎng)模式              音場(chǎng)的模式不是為了真實(shí)的再現(xiàn)錄音時(shí)的聲音,而是讓聲音更能符合收聽者
    發(fā)表于 01-04 15:05 ?1055次閱讀

    STM32的結(jié)構(gòu)和啟動(dòng)模式

    STM32的結(jié)構(gòu)和啟動(dòng)模式需要的來(lái)下載哦。
    發(fā)表于 03-31 17:36 ?46次下載

    適配器模式、裝飾器模式、代理模式的區(qū)別

    適配器模式、裝飾器模式、代理模式都屬于設(shè)計(jì)模式中的結(jié)構(gòu)型模式,結(jié)構(gòu)型設(shè)計(jì)
    發(fā)表于 10-18 15:53 ?1.7w次閱讀
    適配器<b class='flag-5'>模式</b>、裝飾器<b class='flag-5'>模式</b>、代理<b class='flag-5'>模式</b>的區(qū)別

    組合模式(Composite Pattern)的用法

    組合模式主要是為了表達(dá)“部分-整體”的層次結(jié)構(gòu),例如公司的組織架構(gòu),每個(gè)部門下又有若干個(gè)下級(jí)部門,再如菜單結(jié)構(gòu),每個(gè)菜單下可能有一個(gè)或多個(gè)子菜單。
    的頭像 發(fā)表于 06-01 15:30 ?601次閱讀
    <b class='flag-5'>組合</b><b class='flag-5'>模式</b>(Composite Pattern)的用法

    設(shè)計(jì)模式結(jié)構(gòu)性:適配器模式

    適配器模式(Adapter Pattern)是作為兩個(gè)不兼容的接口之間的橋梁。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它結(jié)合了兩個(gè)獨(dú)立接口的功能。
    的頭像 發(fā)表于 06-07 11:56 ?680次閱讀
    設(shè)計(jì)<b class='flag-5'>模式</b><b class='flag-5'>結(jié)構(gòu)性</b>:適配器<b class='flag-5'>模式</b>

    設(shè)計(jì)模式結(jié)構(gòu)性:橋接模式

    橋接模式不是將兩個(gè)不相干的類鏈接,而是將一個(gè)需要多維度變化的類拆分成抽象部分和實(shí)現(xiàn)部分,并且在抽象層對(duì)兩者做組合關(guān)聯(lián),是用組合的方式來(lái)解決繼承的問(wèn)題。
    的頭像 發(fā)表于 06-08 10:49 ?672次閱讀
    設(shè)計(jì)<b class='flag-5'>模式</b><b class='flag-5'>結(jié)構(gòu)性</b>:橋接<b class='flag-5'>模式</b>

    設(shè)計(jì)模式結(jié)構(gòu)性:門面模式

    門面模式,是指提供一個(gè)統(tǒng)一的接口去訪問(wèn)多個(gè)子系統(tǒng)的多個(gè)不同的接口,它為子系統(tǒng)中的一組接口提供一個(gè)統(tǒng)一的高層接口。
    的頭像 發(fā)表于 06-08 14:28 ?600次閱讀
    設(shè)計(jì)<b class='flag-5'>模式</b><b class='flag-5'>結(jié)構(gòu)性</b>:門面<b class='flag-5'>模式</b>

    設(shè)計(jì)模式結(jié)構(gòu)性:享元模式

    享元模式(Flyweight Pattern)主要用于減少創(chuàng)建對(duì)象的數(shù)量,以減少內(nèi)存占用和提高性能。
    的頭像 發(fā)表于 06-08 17:32 ?680次閱讀
    設(shè)計(jì)<b class='flag-5'>模式</b><b class='flag-5'>結(jié)構(gòu)性</b>:享元<b class='flag-5'>模式</b>

    設(shè)計(jì)模式結(jié)構(gòu)性:代理模式

    在代理模式(Proxy Pattern)中,一個(gè)類代表另一個(gè)類的功能。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式。
    的頭像 發(fā)表于 06-09 15:27 ?749次閱讀
    設(shè)計(jì)<b class='flag-5'>模式</b><b class='flag-5'>結(jié)構(gòu)性</b>:代理<b class='flag-5'>模式</b>

    組合模式應(yīng)該怎么用

    uniformly. 組合模式(Composite Pattern):將對(duì)象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu), 使得用戶對(duì)單個(gè)
    的頭像 發(fā)表于 10-09 10:37 ?342次閱讀
    <b class='flag-5'>組合</b><b class='flag-5'>模式</b>應(yīng)該怎么用

    5G技術(shù)和電動(dòng)汽車會(huì)推動(dòng)結(jié)構(gòu)性增長(zhǎng)嗎?.zip

    5G技術(shù)和電動(dòng)汽車會(huì)推動(dòng)結(jié)構(gòu)性增長(zhǎng)嗎?
    發(fā)表于 01-13 09:06 ?1次下載

    存儲(chǔ)器結(jié)構(gòu)性分道篇.zip

    存儲(chǔ)器結(jié)構(gòu)性分道篇
    發(fā)表于 01-13 09:07 ?1次下載

    汽車行業(yè):短期關(guān)注芯片短缺改善,長(zhǎng)期布局結(jié)構(gòu)性機(jī)會(huì).zip

    汽車行業(yè):短期關(guān)注芯片短缺改善,長(zhǎng)期布局結(jié)構(gòu)性機(jī)會(huì)
    發(fā)表于 01-13 09:07 ?2次下載