国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

設(shè)計(jì)模式——組合模式08

這篇具有很好參考價(jià)值的文章主要介紹了設(shè)計(jì)模式——組合模式08。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

組合模式:把類似對(duì)象或方法組合成結(jié)構(gòu)為樹狀的設(shè)計(jì)思路。
例如部門之間的關(guān)系。
設(shè)計(jì)模式,一定要敲代碼理解

設(shè)計(jì)模式——組合模式08,設(shè)計(jì)模式,設(shè)計(jì)模式,組合模式,java

抽象組件

/**
 * @author ggbond
 * @date 2024年04月06日 08:54
 * 部門有:二級(jí)部門(下面管三級(jí)部門) 三級(jí)部門 (無(wú)子部門)
 */
public abstract class Compound {
    private String name; // 部門

    public Compound(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }

    public abstract void add(Compound component); // 添加子部門
    public abstract void remove(Compound component); // 刪除子部門
    public abstract void select(int depth); // 查看全部子部門
}

葉子結(jié)點(diǎn)

/**
 * @author ggbond
 * @date 2024年04月06日 08:57
 * 葉子節(jié)點(diǎn) 三級(jí)部門
 */
public class Leaf extends Compound {
    public Leaf(String name) {
        super(name);
    }

    @Override
    public void add(Compound component) {
        System.out.println("不能加子部門");
    }

    @Override
    public void remove(Compound component) {
        System.out.println("無(wú)子部門,無(wú)刪除權(quán)限");
    }

    @Override
    public void select(int depth) {
        //輸出樹形結(jié)構(gòu)的葉子節(jié)點(diǎn),這里直接輸出設(shè)備名稱
        for(int i = 0;  i < depth; i++) {
            System.out.print("*");
        }
        System.out.print(" ");
        System.out.println(getName());
    }
}

非葉子結(jié)點(diǎn)

/**
 * @author ggbond
 * @date 2024年04月06日 09:00
 */
public class Composite extends  Leaf{
    // 記錄子部門信息
    private ArrayList<Compound> list = new ArrayList<>();

    public Composite(String name) {
        super(name);
    }

    @Override
    public void add(Compound component) {
        list.add(component);
    }

    @Override
    public void remove(Compound component) {
        list.remove(component);
    }

    @Override
    public void select(int depth) {

        for (int i = 0; i < depth; i++) {
            System.out.print("*");
        }
        System.out.print(" ");
        System.out.println(getName());
        // 遞歸
        for(Compound compound: list) {
            compound.select(depth + 1);
        }
    }
}

測(cè)試結(jié)果


/**
 * @author ggbond
 * @date 2024年04月06日 09:04
 */
public class Main {
    public static void main(String[] args) {
        Composite root=new Composite("一級(jí)部門1");
        //二級(jí)部門1
        Composite r21=new Composite("二級(jí)部門1");
        r21.add(new Composite("三級(jí)部門1"));
        r21.add(new Composite("三級(jí)部門2"));
        r21.add(new Composite("三級(jí)部門3"));
        //二級(jí)部門2
        Composite r22=new Composite("二級(jí)部門2");
        r22.add(new Composite("三級(jí)部門4"));
        r22.add(new Composite("三級(jí)部門5"));
        r22.add(new Composite("三級(jí)部門6"));
        //二級(jí)部門3
        Composite r23=new Composite("二級(jí)部門3");

        root.add(r21); root.add(r22); root.add(r23);
        root.select(1);
    }
}

* 一級(jí)部門1
 ** 二級(jí)部門1
  *** 三級(jí)部門1
  *** 三級(jí)部門2
  *** 三級(jí)部門3
 ** 二級(jí)部門2
  *** 三級(jí)部門4
  *** 三級(jí)部門5
  *** 三級(jí)部門6
 ** 二級(jí)部門3

總結(jié)

滿足開閉原則。葉子結(jié)點(diǎn)與非葉子結(jié)點(diǎn)都繼承或?qū)崿F(xiàn)同一抽象,只是葉子功能權(quán)限少,而非葉子結(jié)點(diǎn)需要容器記錄子節(jié)點(diǎn)。

代碼下載

代碼下載文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-847925.html

到了這里,關(guān)于設(shè)計(jì)模式——組合模式08的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 《Java極簡(jiǎn)設(shè)計(jì)模式》第08章:外觀模式(Facade)

    《Java極簡(jiǎn)設(shè)計(jì)模式》第08章:外觀模式(Facade)

    作者:冰河 星球:http://m6z.cn/6aeFbs 博客:https://binghe.gitcode.host 文章匯總:https://binghe.gitcode.host/md/all/all.html 源碼地址:https://github.com/binghe001/java-simple-design-patterns/tree/master/java-simple-design-facade 沉淀,成長(zhǎng),突破,幫助他人,成就自我。 本章難度:★★☆☆☆ 本章重點(diǎn):用最

    2024年02月07日
    瀏覽(19)
  • Java23種設(shè)計(jì)模式-結(jié)構(gòu)型模式之組合模式

    組合模式 (Composite Pattern):將 對(duì)象組合成樹狀結(jié)構(gòu) 以表示“ 部分-整體 ”層次結(jié)構(gòu),同時(shí)保持對(duì)單個(gè)對(duì)象和組合對(duì)象的一致性操作,主要目的是簡(jiǎn)化客戶端代碼,因?yàn)樗梢越y(tǒng)一處理單個(gè)對(duì)象和組合對(duì)象。 通常包含以下幾個(gè)角色: 角色1. 抽象組件 (Component):聲明了 組

    2024年04月26日
    瀏覽(27)
  • Java設(shè)計(jì)模式之結(jié)構(gòu)型-組合模式(UML類圖+案例分析)

    Java設(shè)計(jì)模式之結(jié)構(gòu)型-組合模式(UML類圖+案例分析)

    目錄 一、基礎(chǔ)概念 二、UML類圖 三、角色設(shè)計(jì) 四、案例分析 4.1、基本實(shí)現(xiàn) 4.2、菜單遍歷? 五、總結(jié)? 組合模式(Composite Pattern)又叫部分-整體模式,它通過將對(duì)象組合成樹形結(jié)構(gòu)來(lái)表示“整體-部分”的層次關(guān)系,允許用戶統(tǒng)一單個(gè)對(duì)象和組合對(duì)象的處理邏輯。 角色 描述

    2024年02月16日
    瀏覽(25)
  • 【設(shè)計(jì)模式——學(xué)習(xí)筆記】23種設(shè)計(jì)模式——組合模式Composite(原理講解+應(yīng)用場(chǎng)景介紹+案例介紹+Java代碼實(shí)現(xiàn))

    【設(shè)計(jì)模式——學(xué)習(xí)筆記】23種設(shè)計(jì)模式——組合模式Composite(原理講解+應(yīng)用場(chǎng)景介紹+案例介紹+Java代碼實(shí)現(xiàn))

    編寫程序展示一個(gè)學(xué)校院系結(jié)構(gòu): 需求是這樣,要在一個(gè)頁(yè)面中展示出學(xué)校的院系組成,一個(gè)學(xué)校有多個(gè)學(xué)院,一個(gè)學(xué)院有多個(gè)系 【傳統(tǒng)方式】 將學(xué)院看做是學(xué)校的子類,系是學(xué)院的子類,小的組織繼承大的組織 分析: 在一個(gè)頁(yè)面中展示出學(xué)校的院系組成,一個(gè)學(xué)校有多個(gè)

    2024年02月15日
    瀏覽(32)
  • 【Java面試題】設(shè)計(jì)模式之七種結(jié)構(gòu)性模式——代理模式、適配器模式、橋接模式、裝飾模式、外觀模式、享元模式、組合模式

    目錄 一、代理模式 二、適配器模式 三、橋接模式 四、裝飾模式 五、外觀模式 六、享元模式 七、組合模式 概念: 代理模式是為其他對(duì)象提供一種以代理控制對(duì)這個(gè)對(duì)象的訪問。在某些情況下,一個(gè)對(duì)象不適合或者不能直接引用另一個(gè)對(duì)象,而代理對(duì)象可以在客戶端和目標(biāo)對(duì)

    2023年04月09日
    瀏覽(25)
  • 【設(shè)計(jì)模式-08】Flyweight享元模式

    【設(shè)計(jì)模式-08】Flyweight享元模式

    簡(jiǎn)要的理解:享元模式就是新建一個(gè)池(Pool),該池子(Pool)中有新建好的一堆對(duì)象,當(dāng)需要使用時(shí),從池子(Pool)中直接獲取,不用重新新建一個(gè)對(duì)象。通俗的講就是: 共享元數(shù)據(jù) 。 比如Java中的String就是使用享元模式,String的值存儲(chǔ)在一個(gè)內(nèi)存池中,不用每次分配一個(gè)內(nèi)存存儲(chǔ)

    2024年01月21日
    瀏覽(40)
  • 設(shè)計(jì)模式-組合模式

    設(shè)計(jì)模式-組合模式

    組合模式可以使用一棵樹來(lái)表示 組合模式使得用戶可以使用一致的方法操作單個(gè)對(duì)象和組合對(duì)象 組合模式又叫部分整體模式,將對(duì)象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu),可以更好的實(shí)現(xiàn)管理操作,部分-整體對(duì)象的操作基本一樣,但是應(yīng)該還會(huì)有不一樣的地方

    2024年02月10日
    瀏覽(26)
  • 設(shè)計(jì)模式:組合模式

    組合模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,用于將對(duì)象組織成樹形結(jié)構(gòu),以表示“部分-整體”的層次結(jié)構(gòu)。組合模式使得客戶端可以統(tǒng)一地處理單個(gè)對(duì)象和組合對(duì)象,而不需要區(qū)分它們之間的差異。 在組合模式中,有兩種主要類型的對(duì)象:葉節(jié)點(diǎn)和組合節(jié)點(diǎn)。葉節(jié)點(diǎn)表示樹結(jié)構(gòu)中的

    2024年02月07日
    瀏覽(24)
  • 設(shè)計(jì)模式--組合模式

    設(shè)計(jì)模式--組合模式

    某日,小明公司最近接到一個(gè)辦公管理系統(tǒng)的項(xiàng)目,并且在每個(gè)城市都有分部。這屬于是很常見的OA系統(tǒng),只要前期將需求分析完善好,中后期開發(fā)維護(hù)是不難的。 然而,總部公司使用后覺得很OK,想要其他城市的分公司也執(zhí)行使用。但是現(xiàn)在的問題是,其他分公司的部門和

    2024年01月21日
    瀏覽(27)
  • 設(shè)計(jì)模式——10. 組合模式

    組合模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,用于將對(duì)象組合成樹狀結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。它允許客戶端以一致的方式處理單個(gè)對(duì)象和組合對(duì)象(包含多個(gè)對(duì)象的容器),使得客戶端無(wú)需關(guān)心它們之間的差異。 組合模式通常涉及兩種主要角色: 葉子節(jié)點(diǎn)(Leaf):這是組

    2024年02月07日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包