
Composite
属于 数据结构 模式
将对象组合成 树形结构 以表示 部分-整体 的层次结构 使得用户对单个对象和组合对象的使用具有一致性(稳定)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
class { public: virtual void process() = 0; virtual ~Component() { } };
class Composite : public Component{ string name; list<Component*> elements; public: Composite(const string &s) : name(s) {} void add(Component *element) { elements.push_back(element); } void remove(Component *element) { elements.remove(element); } void process() { for (auto &e : elements) { e->process(); } } };
class Leaf : public Component { string name; public: Leaf(string s) : name(s) { } void process() { } }; void Invoke(Component &c) { c.process(); } int main() { Composite root("root"); Composite treeNode1("treeNode1"); Composite treeNode2("treeNode2"); Composite treeNode3("treeNode3"); Composite treeNode4("treeNode4"); Leaf leat1("left1"); Leaf leat2("left2"); root.add(&treeNode1); treeNode1.add(&treeNode2); treeNode2.add(&leaf1); root.add(&treeNode3); treeNode3.add(&treeNode4); treeNode4.add(&leaf2); Invoke(root); Invoke(leaf2); Invoke(treeNode3); }
|
近期评论