当前位置: 首页 > news >正文

组合模式 详解

组合模式

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

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

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;
}

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


http://www.mrgr.cn/news/4930.html

相关文章:

  • 力扣: 两数之和 梦开始的地方
  • Markdown与Word中插入图片的方法及比较
  • 为啥https比http慢
  • stm32单片机学习 - 参考手册和数据手册
  • 【vue3|第24期】深入了解useRouter:方法、属性与使用示例
  • Redis做消息队列
  • CentOS7使用Rpm方式离线安装MySQL-5.7
  • sql server 截断日志的操作
  • iOS(OC)学习第1天-怎么设置UI
  • springboot的启动流程原理
  • jenkins 禁用脚本安全性
  • 养猫家庭必备好物——宠物空气净化器,让浮毛无处可逃
  • 文件操作2(函数的专栏)
  • MongoDB如何时间范围查询
  • 数据持久层框架MyBatis
  • 【原创】解决七彩虹显卡开启turbo模式后,电脑开机蜂鸣器1长3短,自检码卡AA的问题
  • 阮一峰《TypeScript 教程》学习笔记一类型系统、数组、元祖
  • 关于 瑞芯微的 adb 的使用
  • FreeRTOS学习笔记(四)——延时函数,列表,软件定时器,低功耗模式,内存管理
  • 为什么Qt源码中要用d_ptr和q_ptr