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

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

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

????????組合模式(Composite),將對象組合成樹形結(jié)構(gòu)以表示'部分-整體'的層次結(jié)構(gòu)。組合模式使得用戶對單個(gè)對象和組合對象的使用具有一致性。

Java設(shè)計(jì)模式—組合模式(Composite Pattern),軟考面試八股文,java,設(shè)計(jì)模式,組合模式

Java設(shè)計(jì)模式—組合模式(Composite Pattern),軟考面試八股文,java,設(shè)計(jì)模式,組合模式

public class CompositeTest {
    public static void main(String[] args){
        // 創(chuàng)建主菜單
        MenuComponent mainMenu = new Menu("Insert");
        // 創(chuàng)建子菜單
        MenuComponent subMenu = new Menu("Chart");
        // 創(chuàng)建菜單項(xiàng)
        MenuComponent element = new MenuItem("On This Sheet");
        
        // 將子菜單添加到主菜單中
        mainMenu.addMenuElement(subMenu);
        // 將菜單項(xiàng)添加到子菜單中
        subMenu.addMenuElement(element);
        
        // 打印菜單結(jié)構(gòu)
        printMenus(mainMenu);
    }
    
    private static void printMenus(MenuComponent ifile){
        // 打印當(dāng)前菜單的名稱
        ifile.printName();
        // 獲取當(dāng)前菜單的子元素列表
        List<MenuComponent> children = ifile.getElement();

        // 如果子元素列表為空,則直接返回
        if(children == null) return;
        
        // 遍歷子元素列表,遞歸打印每個(gè)子元素的名稱
        for(MenuComponent element : children){
            printMenus(element);
        }
    }
}
public class Menu extends MenuComponent{
    private List<MenuComponent> elementList;

    public Menu(String name){
        this.name = name;
        this.elementList = new ArrayList<>();
    }

    public boolean addMenuElement(MenuComponent element){
        return elementList.add(element);
    }

    public boolean removeMenuElement(MenuComponent element){
        return elementList.remove(element);
    }

    public List<MenuComponent> getElement(){
        return elementList;
    }
}
public class MenuItem extends MenuComponent{
    public MenuItem(String name){
        this.name = name;
    }

    public boolean addMenuElement(MenuComponent element){
        return false;
    }

    public boolean removeMenuElement(MenuComponent element){
        return false;
    }

    public List<MenuComponent> getElement(){
        return null;
    }
}
public abstract class MenuComponent {
    protected String name;

    public void printName(){
        System.out.println(name);
    }

    public abstract boolean addMenuElement(MenuComponent element);

    public abstract List<MenuComponent> getElement();
}

MenuComponent?抽象類:定義了菜單組件的基本行為,包括打印名稱和管理子元素的方法。

Menu?類:表示菜單,可以包含其他菜單或菜單項(xiàng)。

MenuItem?類:表示菜單中的一個(gè)具體項(xiàng)。

CompositeTest?類:包含了?main?方法,用于測試組合模式的實(shí)現(xiàn)。

CompositeTest 類中,main 方法創(chuàng)建了一個(gè)主菜單、一個(gè)子菜單以及一個(gè)菜單項(xiàng),并將它們按照一定的結(jié)構(gòu)添加到了一起。然后調(diào)用 printMenus 方法打印整個(gè)菜單的結(jié)構(gòu)。

Menu 類表示菜單,它繼承自 MenuComponent 抽象類,并實(shí)現(xiàn)了該抽象類中的抽象方法。Menu 類中包含一個(gè) elementList 成員變量,用于存儲(chǔ)菜單中的子元素(即菜單或菜單項(xiàng))。它提供了添加和移除子元素的方法,并實(shí)現(xiàn)了抽象方法 getElement 來獲取子元素列表。

MenuComponent 抽象類定義了菜單組件的基本行為,包括打印名稱和管理子元素的方法。它有一個(gè) name 成員變量表示菜單組件的名稱,并定義了一個(gè)抽象方法 addMenuElement 用于添加子元素,以及一個(gè)抽象方法 getElement 用于獲取子元素列表。

MenuItem 類表示菜單中的一個(gè)具體項(xiàng),它繼承自 MenuComponent 抽象類,并實(shí)現(xiàn)了該抽象類中的抽象方法。由于菜單項(xiàng)不包含其他子元素,因此 addMenuElement、removeMenuElementgetElement 方法的實(shí)現(xiàn)都返回了相應(yīng)的默認(rèn)值。文章來源地址http://www.zghlxwxcb.cn/news/detail-851750.html

何時(shí)使用組合模式

????????當(dāng)你發(fā)現(xiàn)需求中是體現(xiàn)部分與整體層次的結(jié)構(gòu)時(shí) ,以及你 希望用戶可以忽略組合對象與單個(gè)對象的不同,統(tǒng)一地使用組合結(jié)構(gòu)中的所有對象時(shí), 就應(yīng)該考慮用組合模式了。" Java開發(fā)窗體用的容器控件java.awt.Container,它繼承于java.awt.Component,就有add方法和remove方法,所以在它上面增加控件,比如Button、Label、Checkbox等控件,就變成很自然的事情,這就是典型的組合模式的應(yīng)用。

到了這里,關(guān)于Java設(shè)計(jì)模式—組合模式(Composite Pattern)的文章就介紹完了。如果您還想了解更多內(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)文章

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

    組合模式(Composite Pattern)是一種結(jié)構(gòu)型設(shè)計(jì)模式,它允許你將對象組合成樹狀結(jié)構(gòu)以表示“整體-部分”的層次結(jié)構(gòu)。組合模式使得客戶端可以統(tǒng)一處理單個(gè)對象和對象組合,而不需要區(qū)分它們。 在本篇博客中,我們將詳細(xì)介紹組合模式的概念,并提供一個(gè)簡單的Java代碼示

    2024年02月09日
    瀏覽(28)
  • 【設(shè)計(jì)模式-07】Composite組合模式

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

    定義抽象節(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)

    2024年01月18日
    瀏覽(20)
  • (二)結(jié)構(gòu)型模式:4、組合模式(Composite Pattern)(C++實(shí)例)

    (二)結(jié)構(gòu)型模式:4、組合模式(Composite Pattern)(C++實(shí)例)

    目錄 1、組合模式(Composite Pattern)含義 2、組合模式應(yīng)用場景 3、組合模式的優(yōu)缺點(diǎn) 4、組合模式的UML圖學(xué)習(xí) 5、C++實(shí)現(xiàn)組合模式的簡單示例(公司的OA系統(tǒng)) 1、組合模式(Composite Pattern)含義 組合模式(Composite Pattern),又叫部分整體模式,是用于把一組相似的對象當(dāng)作一個(gè)

    2024年02月12日
    瀏覽(18)
  • Java設(shè)計(jì)模式之建造者模式詳解(Builder Pattern)

    在日常的開發(fā)工作中,我們常常需要?jiǎng)?chuàng)建一些復(fù)雜的對象。這些對象可能包含許多不同的屬性,并且這些屬性的初始化過程可能相當(dāng)復(fù)雜。在這種情況下,建造者模式是一種非常有用的設(shè)計(jì)模式,因?yàn)樗试S我們分步驟地創(chuàng)建復(fù)雜的對象。 概念和原理: 建造者模式(Builder

    2024年02月09日
    瀏覽(25)
  • Java設(shè)計(jì)模式之過濾器模式(Filter Pattern)

    過濾器模式(Filter Pattern)是一種常用的設(shè)計(jì)模式,它用于通過一系列條件來過濾對象集合,并將滿足條件的對象保留下來。該模式可以幫助我們在不修改原始對象集合的情況下,根據(jù)特定的條件對集合進(jìn)行篩選和處理。 在過濾器模式中,通常有三個(gè)核心角色: 過濾器接口(

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

    在軟件設(shè)計(jì)中,設(shè)計(jì)模式是一種被廣泛接受和應(yīng)用的經(jīng)驗(yàn)總結(jié),旨在解決常見問題并提供可復(fù)用的解決方案。 組合模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,它允許將對象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu)。這種模式能夠使客戶端以一致的方式處理單個(gè)對象和對象集合,將

    2024年02月06日
    瀏覽(27)
  • 03-JAVA設(shè)計(jì)模式-組合模式

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

    組合模式(Composite Pattern)允許你將對象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu),使得客戶端以統(tǒng)一的方式處理單個(gè)對象和對象的組合。組合模式讓你可以將對象組合成樹形結(jié)構(gòu),并且能像單獨(dú)對象一樣使用它們。 把部分和整體的關(guān)系用樹形結(jié)構(gòu)來表示,從而是客戶

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

    組合模式(Composite Pattern),又叫部分整體模式,它創(chuàng)建了對象組的樹形結(jié)構(gòu),將對象組合成樹狀結(jié)構(gòu)以表示“整體-部分”的層次關(guān)系。組合模式依據(jù)樹狀結(jié)構(gòu)來組合對象,用來表示部分以及整體層次。這種設(shè)計(jì)模式屬于結(jié)構(gòu)性模式。組合模式使得用戶對單個(gè)對象和組合對象

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

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

    2024年04月26日
    瀏覽(28)
  • 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)又叫部分-整體模式,它通過將對象組合成樹形結(jié)構(gòu)來表示“整體-部分”的層次關(guān)系,允許用戶統(tǒng)一單個(gè)對象和組合對象的處理邏輯。 角色 描述

    2024年02月16日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包