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

Java23種設計模式-結(jié)構(gòu)型模式之組合模式

這篇具有很好參考價值的文章主要介紹了Java23種設計模式-結(jié)構(gòu)型模式之組合模式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

組合模式(Composite Pattern):將對象組合成樹狀結(jié)構(gòu)以表示“部分-整體”層次結(jié)構(gòu),同時保持對單個對象和組合對象的一致性操作,主要目的是簡化客戶端代碼,因為它可以統(tǒng)一處理單個對象和組合對象。

通常包含以下幾個角色:
角色1.抽象組件(Component):聲明了組合對象和葉子對象的公共接口,讓客戶端可以統(tǒng)一處理
角色2.葉子對象(Leaf):實現(xiàn)抽象組件接口,表示樹結(jié)構(gòu)中的葉節(jié)點,不包含子組件。
角色3.組合對象(Composite)也實現(xiàn)抽象組件接口,包含并管理子組件實現(xiàn)樹結(jié)構(gòu)中的分支節(jié)點。
角色4.客戶端(Client):通過抽象組件接口來操作葉子對象和組合對象

優(yōu)點
1.清晰的結(jié)構(gòu):能清晰地表達對象的組合關(guān)系。
2.一致性處理:可以一致地處理單個對象和組合對象。
3.方便擴展:便于添加新的組件或子組件。
4.安全性:封裝了組件的內(nèi)部結(jié)構(gòu),提高了安全性。

缺點
1.設計復雜:組合模式的設計相對復雜,需要考慮對象的層次結(jié)構(gòu)和組合關(guān)系。
2.理解難度增加:對于不熟悉該模式的開發(fā)者來說,理解和使用可能會有一定難度。
3.靈活性受限:由于組合模式的實現(xiàn)方式較為固定,可能會限制一些特殊的需求。
4.性能影響:在處理大型樹狀結(jié)構(gòu)時,可能會導致性能問題。

應用場景如下:
文件和目錄管理:如文件系統(tǒng)中的文件和文件夾。
組織結(jié)構(gòu):例如公司的部門和員工層次結(jié)構(gòu)。
圖形界面:窗口、控件等的組合。
樹狀數(shù)據(jù)結(jié)構(gòu):如二叉樹等。

示例Component 是抽象組件接口,定義了組合模式需要的操作。Leaf 是葉子對象,它實現(xiàn)了 Component 接口。Composite 是組合對象,它也實現(xiàn)了 Component 接口,并管理一組子組件。Client 類展示了如何使用組合模式,它創(chuàng)建了一個組合對象和一個葉子對象,并將葉子對象添加到組合對象中??蛻舳丝梢?code>統(tǒng)一調(diào)用 operation() 方法,無論是對單個葉子對象還是組合對象文章來源地址http://www.zghlxwxcb.cn/news/detail-858385.html

// 抽象組件接口
public interface Component {
    void operation();
}
// 葉子對象
public class Leaf implements Component{
    @Override
    public void operation() {
        System.out.println("Leaf is performing operation.");
    }
}
// 組合對象
public class Composite implements Component{
    private List<Component> children = new ArrayList<>();

    public void add(Component component){
        children.add(component);
    }

    public void remove(Component component){
        children.remove(component);
    }

    @Override
    public void operation() {
        for (Component child : children) {
            child.operation();
        }
    }
}

// 客戶端
public class Client {
    public static void main(String[] args) {
        Component leaf1= new Leaf();
        Component leaf2=new Leaf();
        Composite composite = new Composite();

        composite.add(leaf1);
        composite.add(leaf2);
        composite.remove(leaf1);

        // 統(tǒng)一處理
        composite.operation();
    }
}

到了這里,關(guān)于Java23種設計模式-結(jié)構(gòu)型模式之組合模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • 【地鐵上的設計模式】--結(jié)構(gòu)型模式:組合模式

    什么是組合模式 組合模式是一種結(jié)構(gòu)型設計模式,將對象組合成樹形結(jié)構(gòu),以表示部分整體的層次結(jié)構(gòu),讓用戶對單個對象和組合對象的使用具有一致性。 在組合模式中,抽象構(gòu)件定義了一個統(tǒng)一的接口,用于管理所有對象,葉子節(jié)點和組合節(jié)點都實現(xiàn)了該接口。葉子節(jié)點

    2024年02月02日
    瀏覽(24)
  • 【Java 設計模式】結(jié)構(gòu)型之外觀模式

    外觀模式(Facade Pattern)是一種結(jié)構(gòu)型設計模式, 它為復雜系統(tǒng)提供了一個簡化的接口,隱藏了系統(tǒng)的復雜性,使得客戶端更容易使用系統(tǒng) 。外觀模式通過創(chuàng)建一個包裝類(外觀類),將系統(tǒng)的復雜性封裝起來,對客戶端提供一個簡單的接口。在本文中,我們將深入研究Ja

    2024年01月21日
    瀏覽(25)
  • Java學習——設計模式——結(jié)構(gòu)型模式2

    Java學習——設計模式——結(jié)構(gòu)型模式2

    結(jié)構(gòu)型模式主要涉及如何組合各種對象以便獲得更好、更靈活的結(jié)構(gòu)。雖然面向?qū)ο蟮睦^承機制提供了最基本的子類擴展父類的功能,但結(jié)構(gòu)型模式不僅僅簡單地使用繼承,而更多地通過組合與運行期的動態(tài)組合來實現(xiàn)更靈活的功能。 包括: 1、適配器 2、橋接 3、組合 4、裝

    2024年02月03日
    瀏覽(27)
  • 【Java 設計模式】結(jié)構(gòu)型之代理模式

    代理模式(Proxy Pattern)是一種結(jié)構(gòu)型設計模式, 它允許通過一個代理對象控制對其他對象的訪問 。代理模式在訪問對象時引入了一定程度的間接性,使得可以在訪問對象前后進行一些額外的操作。在本文中,我們將深入研究Java中代理模式的定義、結(jié)構(gòu)、使用場景以及如何在

    2024年01月21日
    瀏覽(23)
  • 【Java 設計模式】結(jié)構(gòu)型之橋接模式

    【Java 設計模式】結(jié)構(gòu)型之橋接模式

    橋接模式(Bridge Pattern)是一種結(jié)構(gòu)型設計模式, 它將抽象部分與實現(xiàn)部分分離,使它們可以獨立變化,從而降低它們之間的耦合 。橋接模式通過將抽象部分和實現(xiàn)部分分離,使得它們可以獨立地變化,同時在它們之間建立一個橋梁。在本文中,我們將介紹 Java 中橋接模式的

    2024年01月19日
    瀏覽(21)
  • 【十】設計模式~~~結(jié)構(gòu)型模式~~~享元模式(Java)

    【十】設計模式~~~結(jié)構(gòu)型模式~~~享元模式(Java)

    【學習難度:★★★★☆,使用頻率:★☆☆☆☆】 ????????面向?qū)ο蠹夹g(shù)可以很好地解決一些靈活性或可擴展性問題,但在很多情況下需要在系統(tǒng)中增加類和對象的個數(shù)。當對象數(shù)量太多時,將導致運行代價過高,帶來性能下降等問題。 享元模式正是為解決這一類問題

    2024年02月08日
    瀏覽(25)
  • Java設計模式-結(jié)構(gòu)型-適配器模式

    Java設計模式-結(jié)構(gòu)型-適配器模式

    ? 與電源適配器相似,在適配器模式中引入了一個被稱為適配器(Adapter)的包裝類,而它所包裝的對象稱為適配者(Adaptee),即被適配的類。適配器的實現(xiàn)就是把客戶類的請求轉(zhuǎn)化為對適配者的相應接口的調(diào)用。也就是說:當客戶類調(diào)用適配器的方法時,在適配器類的內(nèi)部將調(diào)用

    2024年02月20日
    瀏覽(30)
  • 【Java 設計模式】結(jié)構(gòu)型之享元模式

    享元模式(Flyweight Pattern)是一種結(jié)構(gòu)型設計模式,它旨在減少對象的數(shù)量以節(jié)省內(nèi)存和提高性能。享元模式通過共享大量相似對象的狀態(tài),使得這些對象可以共享,而不需要在每個對象中都存儲相同的數(shù)據(jù)。在本文中,我們將深入研究Java中享元模式的定義、結(jié)構(gòu)、使用場景

    2024年01月22日
    瀏覽(29)
  • 【Java 設計模式】結(jié)構(gòu)型之適配器模式

    【Java 設計模式】結(jié)構(gòu)型之適配器模式

    適配器模式(Adapter Pattern)是一種結(jié)構(gòu)型設計模式, 用于將一個類的接口轉(zhuǎn)換成客戶端期望的另一個接口 。這種模式使得原本由于接口不兼容而不能一起工作的類可以一起工作。在本文中,我們將介紹 Java 中適配器模式的定義、結(jié)構(gòu)、使用場景以及如何在實際開發(fā)中應用。

    2024年01月19日
    瀏覽(25)
  • Java設計模式之結(jié)構(gòu)型-橋接模式(UML類圖+案例分析)

    Java設計模式之結(jié)構(gòu)型-橋接模式(UML類圖+案例分析)

    目錄 一、基礎(chǔ)概念 二、UML類圖 三、角色設計 四、案例分析 4.1、支付方式 4.2、支付渠道? 五、總結(jié) 橋接模式(Bridge Pattern)是一種結(jié)構(gòu)型設計模式,其主要目的是“將抽象部分與實現(xiàn)部分分離,使它們都可以獨立地變化”。 橋接模式的核心思想是把抽象(abstraction)與實現(xiàn)

    2024年02月13日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包