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

【設(shè)計(jì)模式-07】Composite組合模式

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

簡要說明

【設(shè)計(jì)模式-07】Composite組合模式,MCA,# 設(shè)計(jì)模式,設(shè)計(jì)模式,組合模式,Composite組合模式,Composite

一、代碼實(shí)現(xiàn)

  • 定義抽象節(jié)點(diǎn)類 Node ,定義抽象方法 public abstract void print();
  • 定義葉子節(jié)點(diǎn)類 LeafNode ,繼承Node節(jié)點(diǎn),實(shí)現(xiàn) print()抽象方法,葉子節(jié)點(diǎn)沒有子節(jié)點(diǎn)
  • 定義子節(jié)點(diǎn)類BranchNode,繼承Node節(jié)點(diǎn),實(shí)現(xiàn) print()抽象方法,子節(jié)點(diǎn)既可以有子節(jié)點(diǎn),也又可以有葉子節(jié)點(diǎn)
  • 定義一個(gè)樹狀目錄結(jié)構(gòu),使用遞歸打印樹狀目錄結(jié)構(gòu)
import java.util.ArrayList;
import java.util.List;

/**
* @description: composite組合模式
* @author: flygo
* @time: 2022/7/20 14:05
*/
public class CompositeMain {
    
    public static void main(String[] args) {
        BranchNode root = new BranchNode("root");
        
        BranchNode chapter1 = new BranchNode("chapter1");
        BranchNode chapter2 = new BranchNode("chapter2");
        
        Node r1 = new LeafNode("r1");
        Node c11 = new LeafNode("c11");
        Node c12 = new LeafNode("c12");
        
        BranchNode b21 = new BranchNode("section21");
        Node c211 = new LeafNode("c211");
        Node c212 = new LeafNode("c212");
        
        root.add(chapter1).add(chapter2).add(r1);
        chapter1.add(c11).add(c12);
        chapter2.add(b21);
        b21.add(c211).add(c212);
        
        tree(root, 0);
    }
    
    private static void tree(Node node, int depth) {
        for (int i = 0; i < depth; i++) {
            System.out.print("--");
        }
        node.print();
        
        if (node instanceof BranchNode) {
            for (Node n : ((BranchNode) node).nodes) {
                tree(n, depth + 1);
            }
        }
    }
}

abstract class Node {
    public abstract void print();
}

/**
* @description: 葉子節(jié)點(diǎn)-不能有子節(jié)點(diǎn)
* @author: flygo
* @time: 2022/7/20 14:10
*/
class LeafNode extends Node {
    String content;
    
    public LeafNode(String content) {
        this.content = content;
    }
    
    @Override
    public void print() {
        System.out.println(content);
    }
}

/**
* @description: 子節(jié)點(diǎn)-可以有子節(jié)點(diǎn)和葉子節(jié)點(diǎn)
* @author: flygo
* @time: 2022/7/20 14:10
*/
class BranchNode extends Node {
    
    // 子節(jié)點(diǎn)可以有子節(jié)點(diǎn)和葉子節(jié)點(diǎn)
    List<Node> nodes = new ArrayList<>();
    
    String name;
    
    public BranchNode(String name) {
        this.name = name;
    }
    
    @Override
    public void print() {
        System.out.println(name);
    }
    
    public BranchNode add(Node node) {
        this.nodes.add(node);
        return this;
    }
}

二、源碼地址

https://github.com/jxaufang168/Design-Patternshttps://github.com/jxaufang168/Design-Patterns文章來源地址http://www.zghlxwxcb.cn/news/detail-800297.html

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

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

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

相關(guān)文章

  • Java設(shè)計(jì)模式—組合模式(Composite Pattern)

    Java設(shè)計(jì)模式—組合模式(Composite Pattern)

    ????????組合模式(Composite),將對象組合成樹形結(jié)構(gòu)以表示\\\'部分-整體\\\'的層次結(jié)構(gòu)。組合模式使得用戶對單個(gè)對象和組合對象的使用具有一致性。 MenuComponent ?抽象類:定義了菜單組件的基本行為,包括打印名稱和管理子元素的方法。 Menu ?類:表示菜單,可以包含其他

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

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

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

    2024年02月15日
    瀏覽(32)
  • 19.組合模式(Composite)

    19.組合模式(Composite)

    意圖:將對象組成樹狀結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu),使得Client對單個(gè)對象和組合對象的使用具有一致性。 上下文:在樹型結(jié)構(gòu)的問題中,Client必須以不同的方式處理單個(gè)對象和組合對象。能否提供一種封裝,統(tǒng)一簡單元素和復(fù)雜元素的概念,讓對象容器自己來實(shí)現(xiàn)

    2024年02月07日
    瀏覽(15)
  • 組合模式(Composite)

    組合模式(Composite?Pattern)是一種結(jié)構(gòu)型設(shè)計(jì)模式,用于表示對象的部分-整體層次結(jié)構(gòu)。它允許客戶統(tǒng)一對待個(gè)別對象和組合對象。這種模式特別適用于處理樹形結(jié)構(gòu)的數(shù)據(jù)。 在Java中,組合模式通常涉及以下幾個(gè)部分: 組件(Component): 為組合中的對象聲明接口,在適當(dāng)

    2024年02月04日
    瀏覽(13)
  • 設(shè)計(jì)模式 07 橋接模式

    橋接模式(Bridge Pattern)屬于 結(jié)構(gòu)型 模式 橋接模式是將抽象部分與它的實(shí)現(xiàn)部分分離,使它們都可以獨(dú)立地變化。它是一種對象結(jié)構(gòu)型模式,又稱為 柄體 (Handle and Body)模式或 接口 (Interface)模式。 比如需要?jiǎng)?chuàng)建電腦對象,市面上的電腦非常多, 品牌 有華為、蘋果、聯(lián)

    2024年02月11日
    瀏覽(15)
  • 設(shè)計(jì)模式07-責(zé)任鏈模式

    設(shè)計(jì)模式07-責(zé)任鏈模式

    責(zé)任鏈模式屬于行為設(shè)計(jì)模式,常見的過濾器鏈就是使用責(zé)任鏈模式設(shè)計(jì)的。 Q:假設(shè)有一個(gè)闖關(guān)游戲,共三關(guān),每一關(guān)達(dá)到通過條件后才能進(jìn)入下一關(guān),使用java實(shí)現(xiàn)。 A:針對這個(gè)問題,按照樸素的想法,我們可以定義三個(gè)類,分別是第一關(guān)、第二關(guān)、第三關(guān),客戶端啟動(dòng)

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

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

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

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

    組合模式:把類似對象或方法組合成結(jié)構(gòu)為樹狀的設(shè)計(jì)思路。 例如部門之間的關(guān)系。 設(shè)計(jì)模式,一定要敲代碼理解 滿足開閉原則。葉子結(jié)點(diǎn)與非葉子結(jié)點(diǎn)都繼承或?qū)崿F(xiàn)同一抽象,只是葉子功能權(quán)限少,而非葉子結(jié)點(diǎn)需要容器記錄子節(jié)點(diǎn)。 代碼下載

    2024年04月11日
    瀏覽(27)
  • 設(shè)計(jì)模式——組合模式

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

    組合模式(Composite Pattern):組合多個(gè)對象形成樹形結(jié)構(gòu)以表示具有“整體—部分”關(guān)系的層次結(jié)構(gòu)。組合模式對單個(gè)對象(即葉子對象)和組合對象(即容器對象)的使用具有一致性,組合模式又可以稱為“整體—部分”(Part-Whole)模式,它是一種對象結(jié)構(gòu)型模式。 組合模式將

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

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

    2024年02月07日
    瀏覽(24)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包