#include <iostream>
#include <vector>
using namespace std;
class Component{
public:
int value;
Component(int val){
value = val;
cout << "Component value: " << value << endl;
}
virtual void add(Component*){}
};
class Composition : public Component{
public:
vector<Component*> c;
Composition(int val) : Component(val){}
void add(Component* elem){
c.push_back(elem);
}
};
class Primitive : public Component{
public:
Primitive(int val) : Component(val){
cout << "Primitive val: " << val << endl;
}
};
int main()
{
Primitive a(10);
Primitive b(20);
Primitive c(30);
Composition A(100);
A.add(&a);
A.add(&b);
A.add(&c);
cout << A.c.front()->value << endl;
cout << A.c.back()->value << endl;
return 0;
}
Composite pattern 组合模式
最新推荐文章于 2025-12-21 21:47:42 发布
该代码示例展示了C++中类的继承和组合概念。`Component`是基类,`Composition`和`Primitive`是其派生类。`Composition`类使用`vector`容器存储`Component`指针,并实现了添加组件的方法。在`main`函数中,创建了`Primitive`对象并添加到`Composition`对象`A`中,最后输出了`Composition`中第一个和最后一个组件的值。
1301

被折叠的 条评论
为什么被折叠?



