C++ 中的組合設計模式
如果我們希望將一組物件當作單個物件同等對待,就可以使用組合模式。組合模式按照樹結構對物件進行組合,以表示部分和整體層次結構。這種設計模式屬於結構模式,因為該模式建立了一組物件的樹結構。
這種模式建立了一個類,其中包含一組自身物件。該類提供了修改相同物件組的方法。
我們透過以下示例展示組合模式的使用,其中我們將展示組織的員工層次結構。

在這裡,我們可以看到組合和葉類都實現了元件。重要的部分是組合類,它還包含由組合關係表示的元件物件。
示例程式碼
#include <iostream>
#include <vector>
using namespace std;
class PageObject {
public:
virtual void addItem(PageObject a) { }
virtual void removeItem() { }
virtual void deleteItem(PageObject a) { }
};
class Page : public PageObject {
public:
void addItem(PageObject a) {
cout << "Item added into the page" << endl;
}
void removeItem() {
cout << "Item Removed from page" << endl;
}
void deleteItem(PageObject a) {
cout << "Item Deleted from Page" << endl;
}
};
class Copy : public PageObject {
vector<PageObject> copyPages;
public:
void AddElement(PageObject a) {
copyPages.push_back(a);
}
void addItem(PageObject a) {
cout << "Item added to the copy" << endl;
}
void removeItem() {
cout << "Item removed from the copy" << endl;
}
void deleteItem(PageObject a) {
cout << "Item deleted from the copy";
}
};
int main() {
Page p1;
Page p2;
Copy myCopy;
myCopy.AddElement(p1);
myCopy.AddElement(p2);
myCopy.addItem(p1);
p1.addItem(p2);
myCopy.removeItem();
p2.removeItem();
}輸出
Item added to the copy Item added into the page Item removed from the copy Item Removed from page
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP