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

济南网站建设行知科技不错如何创建网站

济南网站建设行知科技不错,如何创建网站,wordpress空间服务商,网站上做网页怎么改图片概念 组合人模式是结构型设计模式的一种,主要是用于解决代码中出现类像树一样进行组合而出现的组合结构的相关操作问题。使其树中的任意一个节点(无论是子节点还是父节点)都可以使用同一套接口进行操作。 使用场景 1、如果希望我们对象组合…

概念

组合人模式是结构型设计模式的一种,主要是用于解决代码中出现类像树一样进行组合而出现的组合结构的相关操作问题。使其树中的任意一个节点(无论是子节点还是父节点)都可以使用同一套接口进行操作。

使用场景

1、如果希望我们对象组合像树一样,就可以使用组合模式

2、客户端的代码需要以相同的方式处理复杂或者简单的元素(组合对象或者单个对象),可以使用组合模式。

实现方式

1、创建一个可以组成树状结构的核心模型(抽象接口类)。尝试将其分解为简单的元素和容器,容器必须能够同时包含简单元素和其他容器。

2、声明组件接口及其一系列的方法,这些方法对简单和复杂元素都有意义。

3、创建一个叶节点类的表示元素。

4、创建一个容器类表示复杂元素,在该类中,创建一个数组成员变量来存储对于子元素的引用,该数组必须能够同时保持叶节点和容器,因此请确保将其声明为组合接口类型。

5、最后,容器中定义添加和删除子元素的方法。

类组合结构

在这里插入图片描述

示例代码

#include <iostream>
#include "ZuHeMoshi.h"int main()
{std::cout << "欢迎东哥来到设计模式的世界!\n";//创建叶子节点Leaf leaf1;leaf1.setTime(2);Leaf leaf2;leaf2.setTime(2);Leaf leaf3;leaf3.setTime(2);Leaf leaf4;leaf4.setTime(2);AbstractBase* container1 = new Container();container1->addAbstractBase(&leaf1);container1->addAbstractBase(&leaf2);cout << "container1 time : " << container1->allTime() << endl;AbstractBase* container2 = new Container();container2->addAbstractBase(&leaf3);container2->addAbstractBase(&leaf4);container2->addAbstractBase(container1);cout << "container2 time : " << container2->allTime() << endl;
}
#pragma once
#include <vector>
using namespace std;
class AbstractBase
{
public:AbstractBase() {}~AbstractBase() {}virtual void addAbstractBase(AbstractBase* abstractBase) {};virtual int allTime() { return 0; };//计算所有时间,假设代码中这是需要计算组合或者单个元素的运行时间的函数int m_time;
};class Leaf : public AbstractBase
{
public:Leaf() {}~Leaf() {}int allTime();void setTime(int time) {m_time = time;}
private:int m_time;
};class Container : public AbstractBase
{
public:Container() {}~Container() {}void addAbstractBase(AbstractBase* abstractBase);//暂时就写个添加int allTime();
private:vector<AbstractBase*> m_vAbstractBase;
};
#include "ZuHeMoshi.h"int Leaf::allTime()
{return m_time;
}void Container::addAbstractBase(AbstractBase* abstractBase)
{m_vAbstractBase.push_back(abstractBase);
}int Container::allTime()
{int sun = 0;for (AbstractBase* base : m_vAbstractBase) {sun += base->allTime();}return sun;
}
http://www.dtcms.com/wzjs/280240.html

相关文章:

  • wordpress 网站加速百度关键词指数查询
  • 井陉县城乡建设局网站广州谷歌优化
  • 网站如何做网络推广个人在线网站推广
  • 西安做企业网站自建网站平台有哪些
  • 潍坊建设公司网站精准营销的三要素
  • 企业为什么要创新seo教程 seo之家
  • 这样做自己公司的网站网络广告投放
  • 网站开发 深圳5000元做百度推广效果怎么样
  • 哪个跨境电商网站做的最好徐州seo外包平台
  • 唐山网站制作企业电商培训机构排名前十
  • 亚马逊deal网站怎么做百度小说风云榜2022
  • 毕业作品是做网站的答辩会问什么阳西网站seo
  • wordpress 运费模板aso榜单优化
  • 做html5网站深圳将进一步优化防控措施
  • 优的深圳网站设计公司百度竞价是seo还是sem
  • 企业网站的网址通常包括免费推广平台
  • 漂亮的php网站源码网站排名优化培训电话
  • 做浏览单的网站seo优化培训
  • 小程序搭建需要什么企业整站seo
  • 家居网站建设效果站长工具a级
  • 互动网站建设公司公司网络搭建
  • 网上书城网站开发的目的与意义seo研究中心教程
  • 做网站的积木式编程网站外链优化方法
  • 企业购 网站建设app注册推广
  • eclipse做动态网站cpa游戏推广联盟
  • 自己的网站如何做快照劫持百度网址大全电脑版旧版本
  • h5网站建设图标seo推广费用
  • 什么网站做批发零食的很多cfa一级看多久两分钟
  • 做兼职靠谱的网站有哪些免费网页制作模板
  • dhl网站做形式发票线上推广方案模板