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

設計模式--組合模式(Composite Pattern)

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

組合模式(Composite Pattern)是一種結構型設計模式,它允許你將對象組合成樹形結構,并且能像使用獨立對象一樣使用它們。

組合模式主要包含以下幾個角色:

  1. Component:這是組合中對象聲明接口,在適當的情況下,實現(xiàn)所有類共有接口的默認行為。聲明一個接口用于訪問和管理Component的子部件。
  2. Leaf:在組合中表示葉節(jié)點對象,葉節(jié)點沒有子節(jié)點。
  3. Composite:定義有枝節(jié)點行為,用來存儲子部件,在Component接口中實現(xiàn)與子部件有關操作,如增加(add)和刪除(remove)等。

組合模式的主要優(yōu)點是:

  • 高層模塊調用簡單:客戶端可以一致地使用組合結構和單個對象,簡化了客戶端與這些對象的交互,讓客戶端更簡單地操作這些對象。
  • 節(jié)點自由增加:使用組合模式,我們可以動態(tài)地添加、刪除和修改對象,也就是說,客戶端不必因為業(yè)務邏輯的改變而改變。
    組合模式適用于以下場景:
  • 想表示對象的部分-整體層次結構。
  • 希望用戶忽略組合對象和單個對象的不同,用戶將統(tǒng)一地使用組合結構中的所有對象。

以下是一個簡單的C++實現(xiàn)的組合模式(Composite Pattern)示例:

#include <iostream>
#include <vector>

// 抽象組件
class Component {
public:
    virtual void operation() = 0;
    virtual void add(Component* c) {}
    virtual void remove(Component* c) {}
    virtual ~Component() {}
};

// 葉子組件
class Leaf : public Component {
public:
    void operation() override {
        std::cout << "Leaf operation..." << std::endl;
    }
};

// 復合組件
class Composite : public Component {
public:
    void operation() override {
        std::cout << "Composite operation..." << std::endl;
        for (Component* c : children) {
            c->operation();
        }
    }

    void add(Component* c) override {
        children.push_back(c);
    }

    void remove(Component* c) override {
        children.erase(std::remove(children.begin(), children.end(), c), children.end());
    }

    ~Composite() {
        for (Component* c : children) {
            delete c;
        }
        children.clear();
    }

private:
    std::vector<Component*> children;
};

int main() {
    Composite* composite = new Composite();
    composite->add(new Leaf());
    composite->add(new Leaf());

    Composite* composite2 = new Composite();
    composite2->add(new Leaf());
    composite2->add(new Leaf());

    composite->add(composite2);
    composite->operation();

    delete composite;

    return 0;
}

在這個例子中,Component是抽象組件,定義了operation、add和remove等接口。Leaf是葉子組件,實現(xiàn)了operation接口。Composite是復合組件,除了實現(xiàn)operation接口,還實現(xiàn)了add和remove接口,用于添加和刪除子組件。在operation接口中,Composite會調用所有子組件的operation接口。文章來源地址http://www.zghlxwxcb.cn/news/detail-835991.html

到了這里,關于設計模式--組合模式(Composite Pattern)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

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

領支付寶紅包贊助服務器費用

相關文章

  • 【設計模式-07】Composite組合模式

    【設計模式-07】Composite組合模式

    定義抽象節(jié)點類 Node ,定義抽象方法 public abstract void print(); 定義葉子節(jié)點類 LeafNode ,繼承Node節(jié)點,實現(xiàn) print() 抽象方法,葉子節(jié)點沒有子節(jié)點 定義子節(jié)點類 BranchNode ,繼承Node節(jié)點,實現(xiàn) print() 抽象方法,子節(jié)點既可以有子節(jié)點,也又可以有葉子節(jié)點 定義一個樹狀目錄結構

    2024年01月18日
    瀏覽(21)
  • 【設計模式——學習筆記】23種設計模式——組合模式Composite(原理講解+應用場景介紹+案例介紹+Java代碼實現(xiàn))

    【設計模式——學習筆記】23種設計模式——組合模式Composite(原理講解+應用場景介紹+案例介紹+Java代碼實現(xiàn))

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

    2024年02月15日
    瀏覽(32)
  • (二)結構型模式:4、組合模式(Composite Pattern)(C++實例)

    (二)結構型模式:4、組合模式(Composite Pattern)(C++實例)

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

    2024年02月12日
    瀏覽(19)
  • 設計模式——原型模式(Prototype Pattern)

    設計模式——原型模式(Prototype Pattern)

    概述 ?????? 原型模式(Prototype? Pattern):使用原型實例指定創(chuàng)建對象的種類,并且通過拷貝這些原型創(chuàng)建新的對象。原型模式是一種對象創(chuàng)建型模式。原型模式的工作原理很簡單:將一個原型對象傳給那個要發(fā)動創(chuàng)建的對象,這個要發(fā)動創(chuàng)建的對象通過請求原型對象拷貝自

    2024年01月16日
    瀏覽(21)
  • 設計模式|原型模式(Prototype Pattern)

    原型模式(Prototype Pattern)是一種創(chuàng)建型設計模式,其核心思想是通過復制現(xiàn)有對象來創(chuàng)建新對象,而無需顯式地指定它們的類。這種模式通常用于當對象的創(chuàng)建成本較高,或者對象初始化過程比較復雜時。 原型模式的主要角色包括原型接口(Prototype Interface)、具體原型類(

    2024年04月23日
    瀏覽(24)
  • 設計模式--工廠模式(Factory Pattern)

    設計模式--工廠模式(Factory Pattern)

    工廠模式(Factory Pattern)是一種創(chuàng)建型設計模式,它提供了一種創(chuàng)建對象的接口,但是將對象的實例化過程推遲到子類中。工廠模式允許通過調用一個共同的接口方法來創(chuàng)建不同類型的對象,而無需暴露對象的實例化邏輯。 工廠模式的主要目標是解耦對象的創(chuàng)建和使用,以及

    2024年02月10日
    瀏覽(31)
  • 設計模式--代理模式(Proxy Pattern)

    設計模式--代理模式(Proxy Pattern)

    代理模式(Proxy Pattern)是一種結構型設計模式,它允許一個對象(代理)充當另一個對象(真實對象)的接口,以控制對該對象的訪問。代理對象可以在訪問真實對象之前或之后執(zhí)行一些操作,從而增強或限制真實對象的行為。 代理模式的主要目的是為了控制訪問,而不是

    2024年02月10日
    瀏覽(22)
  • 【設計模式--原型模式(Prototype Pattern)

    【設計模式--原型模式(Prototype Pattern)

    原型模式(Prototype Pattern)是一種創(chuàng)建型設計模式,它的主要目的是通過復制現(xiàn)有對象來創(chuàng)建新的對象,而無需顯式地使用構造函數或工廠方法。這種模式允許我們創(chuàng)建一個可定制的原型對象,然后通過復制它來創(chuàng)建新的對象,從而避免了重復構建相似的對象。 在原型模式中

    2024年02月11日
    瀏覽(22)
  • 設計模式——狀態(tài)模式(State Pattern)

    對象的行為依賴于它的狀態(tài)(屬性),并且可以根據它的狀態(tài)改變而改變它的相關行為。 1.1、定義狀態(tài)接口 1.2、定義開始狀態(tài)實現(xiàn)類 1.3、定義停止狀態(tài)實現(xiàn)類 1.4、創(chuàng)建 Context 類 1.5、使用 Context 來查看當狀態(tài) State 改變時的行為變化。 創(chuàng)建型模式 結構型模式 1、設計模式——

    2024年02月06日
    瀏覽(22)
  • 設計模式——建造者模式(Builder Pattern)

    設計模式——建造者模式(Builder Pattern)

    概述 ?????? 建造者模式是較為復雜的創(chuàng)建型模式,它將客戶端與包含多個組成部分(或部件)的復雜對象的創(chuàng)建過程分離,客戶端無須知道復雜對象的內部組成部分與裝配方式,只需要知道所需建造者的類型即可。它關注如何一步一步創(chuàng)建一個的復雜對象,不同的具體建

    2024年01月20日
    瀏覽(22)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包