C 設計模式 組合模式

2022-06-09 22:06:10 字數 2020 閱讀 9956

一.介紹  

組合模式(composite pattern)。屬於結構型模式。將物件組合成樹形結構以表示「部分-整體」的層次結構,組合模式使得使用者對單個物件和組合物件的使用具有一致性。

二.實現

舉個例子,我們寫前端有用上html標籤(抽象構件),這個標籤分為雙標籤(樹枝構件)和單標籤(樹葉構件),在寫html時,雙標籤可以包括雙標籤和單標籤,單標籤不能包括任何標籤。無論寫什麼標籤,都是寫html。這種情況就可以使用組合模式來實現。

//

抽象構件(component)角色

//html標籤

public

abstract

class

component

public

virtual

string name2

public

abstract

void

add(component child);

public

abstract

void

remove(component child);

public

abstract

void display(int depth = 0);}

//樹葉構件(leaf)角色

//單標籤

public

class

leaf : component

public

override

void display(int depth = 0

)

public

override

void

remove(component child)

}//樹枝構件(composite)角色

//雙標籤

public

class

composite : component

public

override

void display(int depth = 0

) );

console.writeline(

new string('

-', depth * 2) +name2);

}public

override

void

remove(component child)

}//呼叫public

static

void main(string

args)

;

//header標籤及裡面的標籤

var header = new composite ;

header.add(

new leaf );

header.add(

new leaf );

//div標籤及裡面的標籤

var content = new composite ;

var banner = new composite ;

banner.add(

new leaf );

content.add(banner);

//footer標籤

var footer = new composite ;

//html標籤包括的標籤

html.add(header);

html.add(content);

html.add(footer);

//輸出

html.display(1

);}

輸出內容。

三.總結

優點:1.組合模式使得客戶端可以一致地處理物件和物件容器,無需關係處理的單個物件,還是組合的物件容器。

2.將「客戶**與複雜的物件容器結構」解耦。

3.可以更容易地往組合物件中加入新的構件。

缺點:1.使得設計更加複雜。客戶端需要花更多時間去理解物件之間的層級關係。

C 設計模式 組合模式

一.概述 組合模式,將物件組合成樹形結構以表示 部分 整體 的層次結構,組合模式使得使用者對單個物件和組合物件的使用具有一致性。結構 1.component 是組合中的物件宣告介面,在適當的情況下,實現所有類共有介面的預設行為。宣告乙個介面用於訪問和管理component子部件。2.leaf 在組合...

C 設計模式 組合模式

一 組合模式的定義 組合多個物件形成樹形結構以表示具有部分 整體關係的層次結構。二 說明 組合模式關注那些包含葉子構件和容器構件的結構以及它們的組織形式,在葉子結構中不包含成員物件,而容器構件中包含成員物件,這些物件通過遞迴組合可構成乙個樹形結構。由於容器物件和葉子物件在功能上存在區別,因此在使用這...

C 設計模式 組合模式

ifndef composite h define composite h include include include 說明 組合模式的關鍵是定義了乙個抽象構件類,它既可以代表葉子,又可以代表容器,而客戶端針對該抽象構件類進行程式設計,無須知道它到底表示的是葉子還是容器,可以對其進行統一處理。同...