//
// Created by win10 on 2021/11/16.
//
#include <thread>
#include <iostream>
#include <vector>
using namespace std;
/*
* 组合模式
*/
class Component {
public:
Component(string str): m_name(str) {}
virtual void add(Component* component) = 0;
virtual void display(int nDepth) = 0;
string m_name;
};
class Leaf: public Component {
public:
Leaf(string name): Component(name) {}
virtual void add(Component* component) {
std::cout << "leaf can't add." << std::endl;
}
virtual void display(int nDepth) {
string str;
for (int i(0); i < nDepth; i++)
str += '-';
str += this->m_name;
}
};
class Composite: public Component {
public:
Composite(string name): Component(name) {}
virtual void add(Component* component) {
this->m_component.push_back(component);
}
virtual void display(int nDepth) {
string str;
for(int i(0); i < nDepth; i++)
str += '-';
str += this->m_name;
std::cout << str << std::endl;
for(auto iterator = this->m_component.begin(); iterator != this->m_component.end(); iterator++) {
(*iterator)->display(nDepth + 2);
}
}
private:
vector<Component*> m_component;
};
int main() {
Composite* composite1 = new Composite("xw");
composite1->add(new Leaf("xl"));
composite1->add(new Leaf("xz"));
Composite* composite2 = new Composite("xxw");
composite2->add(new Leaf("ds"));
composite1->add(composite2);
composite1->display(1);
return 0;
}
量化交易之设计模式篇 - 组合模式
最新推荐文章于 2022-11-09 16:07:06 发布