...

/

Composite Design Pattern Example

Composite Design Pattern Example

Learn the composite design pattern with some coding examples.

We'll cover the following...

Example

In the following example, we have defined a Component named Grafik, which is implemented by GrafikKompositum, a composite object, and Ellipse, a leaf object. First, we add some leaf objects to the composite object and then print it. How will we do it? Let’s have a look at the code and its explanation.

Press + to interact
#include <iostream>
#include <set>
class Grafik {
public:
virtual void print() const = 0;
virtual ~Grafik() {}
};
class GrafikKompositum : public Grafik {
std::set<Grafik const*> children;
typedef std::set<Grafik const*>::const_iterator grIter;
public:
void print() const {
for (grIter it = children.begin(); it != children.end(); it++) (*it)->print();
}
void add(Grafik const* component) {
children.insert(component);
}
void remove(Grafik const* component) {
children.erase(component);
}
};
class Ellipse: public Grafik {
public:
void print() const {
std::cout << "Ellipse\n";
}
};
int main(){
Ellipse ellipse1, ellipse2, ellipse3, ellipse4;
GrafikKompositum grafik1, grafik2, grafikGesamt;
grafik1.add(&ellipse1);
grafik1.add(&ellipse2);
grafik1.add(&ellipse3);
grafik2.add(&ellipse4);
grafikGesamt.add(&grafik1);
grafikGesamt.add(&grafik2);
grafikGesamt.print();
}

Code explanation

Let’s explain the code above line ...