您的位置:首页 > 财经 > 金融 > 组合模式 详解

组合模式 详解

2024/12/23 3:47:42 来源:https://blog.csdn.net/qq_40666620/article/details/141392743  浏览:    关键词:组合模式 详解

组合模式

简介: 将对象组合成树形结构以表示"部分-整体"的层次结构, 使得用户对单个对象和组合对象的使用具有一致性.

组合模式也是一种结构类型的模式.看简介比较容易理解, 毕竟树形结构是数据结构必修的, 我们仍然举个例子方便理解
以公司的组织架构为例
公司 - 部门 - 员工
其中员工是叶子节点, 公司和部门是树枝节点
代码

class Node
{
private:string name;
public:Node(string s) : name(s) {};string get_name() { return name; };virtual void display() = 0;virtual void add_node(Node* n) = 0;
};class Leaf : public Node
{
public:Leaf(string s) : Node(s) {};void add_node(Node* n) override{cout << "leaf node can not add node" << endl;}void display(){cout << get_name() << endl;}
};class Branch : public Node
{
private:vector<Node*> nodes;
public:Branch(string s) : Node(s) {};void add_node(Node* n) override{nodes.push_back(n);}void display() override{cout << get_name() << endl;for (Node* m : nodes)m->display();}
};int main()
{Node* b = new Branch("公司");Node* b1 = new Branch("__研发部");Node* b2 = new Branch("__营销部");Node* b3 = new Leaf("____小明");Node* b4 = new Leaf("____小强");Node* b5 = new Leaf("____小刚");b->add_node(b1);b->add_node(b2);b1->add_node(b3);b2->add_node(b4);b2->add_node(b5);b->display();return 0;
}

执行结果
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com