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

新乡市网站建设_网站建设公司_Redis_seo优化

绵阳做网站的,做网站的程序,wordpress免费商业主题,北京注册公司地址费用简介 组合模式是一种结构型设计模式#xff0c;它能够将对象组合成树形结构以表示“整体-部分”的层次结构#xff0c;并且能够使用相同的方式处理单个对象和组合对象。组合模式使得客户端可以一致地处理单个对象和组合对象#xff0c;无需关心具体的对象类型。 组合模式将对…简介 组合模式是一种结构型设计模式它能够将对象组合成树形结构以表示“整体-部分”的层次结构并且能够使用相同的方式处理单个对象和组合对象。组合模式使得客户端可以一致地处理单个对象和组合对象无需关心具体的对象类型。 组合模式将对象组织成树型结构其中树的节点可以是单个对象或者组合对象。通过将对象以树形的方式组合可以将单个对象和组合对象一视同仁。这种方式使得客户端无需区分单个对象和组合对象可以递归地处理整个树结构从而简化了客户端代码。 描述 组合模式涉及以下角色 组件Component是组合模式中的树节点接口声明了可以对子节点进行操作的方法定义了组合对象和叶子对象的共有接口。组合Composite是组合模式中的非叶子节点类实现了组件接口并保存了一个子节点的列表。组合对象可以包含其他组合对象或叶子对象。叶子Leaf是组合模式中的叶子节点类实现了组件接口表示组合对象中的单个对象。 原理 组合模式的原理是将组合对象和叶子对象统一处理客户端无需区分对待。组合对象中可以包含其他组合对象或叶子对象这种递归结构可以无限扩展。 类图 1、Component组合模式中的“根节点”可以是接口、抽象类、普通类该类中定义了其子类的所有共性内容并且该类中还存在着用于访问和管理它子部件的方法。 2、Leaf组合中的叶子节点也就是最末端的节点该节点下不会再有子节点。 3、Composite非叶子节点它的作用是存储子部件并且在Composite中实现了对子部件的相关操作。 示例 假设有一个文件系统在文件系统中有文件夹组合对象和文件叶子对象。文件夹可以包含其他文件夹或文件而文件本身不能包含其他对象。可以使用组合模式来处理文件系统中的对象。 在示例中有三个主要类 Component组件表示组合模式中的树节点定义了可以对子节点进行操作如添加、删除、打印等的接口。Composite组合表示组合模式中的非叶子节点实现了组件接口并保存了一个子节点的列表。Leaf叶子表示组合模式中的叶子节点实现了组件接口表示组合对象中的单个对象。 C示例代码 #includeiostream #includestring #includevectorusing namespace std;// 组件接口 class Component { public:virtual void add(Component* component) 0;virtual void remove(Component* component) 0;virtual void print() 0; };// 组合类 class Composite : public Component { private:string name;vectorComponent* children;public:Composite(const string name) : name(name) {}void add(Component* component) override {children.push_back(component);}void remove(Component* component) override {for (auto it children.begin(); it ! children.end(); it) {if (*it component) {children.erase(it);break;}}}void print() override {cout Folder: name endl;for (auto child : children) {child-print();}} };// 叶子类 class Leaf : public Component { private:string name;public:Leaf(const string name) : name(name) {}void add(Component* component) override {cout Cannot add to a leaf. endl;}void remove(Component* component) override {cout Cannot remove from a leaf. endl;}void print() override {cout File: name endl;} };int main() {Component* root new Composite(root);Component* folder1 new Composite(folder1);Component* folder2 new Composite(folder2);Component* file1 new Leaf(file1);Component* file2 new Leaf(file2);Component* file3 new Leaf(file3);root-add(folder1);root-add(folder2);folder1-add(file1);folder1-add(file2);folder2-add(file3);root-print();delete root;delete folder1;delete folder2;delete file1;delete file2;delete file3;return 0; }输出结果 Folder: root Folder: folder1 File: file1 File: file2 Folder: folder2 File: file3解释 在示例中使用组合模式创建了一个文件系统的树形结构。树的根节点是一个组合对象包含了两个子节点文件夹。每个文件夹又包含了一些子节点文件或其他文件夹。通过使用组合模式可以统一处理所有的节点无论是文件夹还是文件都可以使用相同的方式进行操作。 结论 组合模式提供了一种处理整体-部分结构的方式使得客户端代码可以统一处理单个对象和组合对象。通过使用组合模式可以实现树形结构的组织和操作从而更好地管理复杂的对象结构。 应用场景 处理树形结构的场景例如文件系统、组织结构等。需要统一处理单个对象和组合对象的场景例如图形界面中的组件布局、菜单系统等。需要递归地处理对象的场景例如目录结构的遍历、文件搜索等。需要实现树形操作的场景例如代码抽象语法树的操作。 总之组合模式可以使得客户端无需区分单个对象和组合对象可以统一地处理对象的层次结构。它提供了一种灵活且可扩展的方式来处理整体-部分结构适用于需要处理层次结构的场景。
http://www.lebaoying.cn/news/138717.html

相关文章:

  • 网站建设风景课程设计报告wordpress写的文章打不开
  • 网站被加入js广告如皋市城乡建设局网站
  • 毕节市城乡住房建设网站南京网站制作公司电话
  • 扬州网站建设费用国际原油价格最新实时消息
  • wordpress建设网站wordpress能恢复修改前吗
  • 桂林象鼻山离哪个高铁站近青龙建站教程自学网
  • 做定制商品的网站湛江互联网公司
  • 买房网站排名锚文本外链查询网站
  • 网站开发打赏功能网站备案修改域名ip
  • 做网站阿里云买哪个服务器好点福州营销型网站建设公司
  • 沧州有没有做网站的龙岩网站建设极速建站
  • 设计师赚钱的网站巴西网站后缀
  • 网上做视频赚钱的网站哪家的网站效果好
  • 服装网站建设发展状况html5 企业网站
  • 医院网站建设需要多少钱建设银行客户端网站
  • 万能小偷程序做网站保山网站建设报价
  • 买了个服务器 怎么做网站wordpress编辑器提示失败
  • 潍坊知名网站建设公司代理公司注册费用
  • 泉州做网站qzxiaolv中小企业网络
  • 湖北住房和城乡建设厅官方网站公司邮箱号
  • 办网站流程电商网站功能模块图
  • 物流公司网站建设系统规划房地产门户
  • 黄岩地区做环评立项在哪个网站网站设计的工作要求
  • 网站开发 一个页面多少钱qq在线登录聊天
  • 确定网站主题云搜索下载
  • 网站不用了怎么办做公司网站500元
  • 南昌网站建设培训价格低廉的意思
  • Apache局域网网站制作工程私人承包协议书
  • 门户网站系统设计sem培训班
  • 网站原型设计规范百度智能小程序入口官网