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

网站建设网址百度宣传做网站多少钱

网站建设网址,百度宣传做网站多少钱,如何 安装 字体 wordpress,做电子相册的大网站1、组合模式的提出 在软件开发过程中,使用者Client过多依赖所操作对象内部的实现结构,如果对象内部的实现结构频繁发生变化,则使用者的代码结构将要频繁地修改,不利于代码地维护和扩展性;组合模式可以解决此类问题。组…

1、组合模式的提出

在软件开发过程中,使用者Client过多依赖所操作对象内部的实现结构,如果对象内部的实现结构频繁发生变化,则使用者的代码结构将要频繁地修改,不利于代码地维护和扩展性;组合模式可以解决此类问题。组合模式可以使用者代码与复杂地操作对象结构进行解耦,根据操作对象的实现结构抽象出一个的基类,让操作对象内部根据需求变化实现复杂数据地操作接口,则使用者使用操作对象提供的统一接口就可完成功能。

2、需求描述

有根节点、子节点、叶子节点,这三种节点都有自己的名字。操作规则:根节点下面可以添加子节点和叶子节点;子节点下面可以添加子子节点和叶子节点;叶子节点下面不能再添加其他节点。

设计一个功能代码,模拟上面的节点添加规则,使用者可以访问这些节点的数据结构。

3、功能实现

(1)UML图如下:

                           

 (2)代码实现如下:

#include <iostream>
#include <string>
#include <vector>class Component
{
protected:std::string m_strName;
public:Component(std::string name):m_strName(std::move(name)){};virtual void operation() const =0;std::string getName(){return m_strName;};virtual ~Component(){};
};class Leaf:public Component
{
public:explicit Leaf(std::string name):Component(name){};virtual void operation() const override{std::cout << "Leaf: " << m_strName << std::endl;};
};class Composite:public Component
{
private:std::vector<Component*>m_vecChildren;
public:explicit Composite(std::string name):Component(name){};void add(Component* p){m_vecChildren.emplace_back(p);};void remove(Component* p){for (auto it = m_vecChildren.begin(); it != m_vecChildren.end(); it++) {if (*it == p) {m_vecChildren.erase(it);std::cout << m_strName << " remove: " << p->getName() << std::endl;break;}}};void operation() const override {std::cout << "Composite: " << m_strName << std::endl;for (const auto& child : m_vecChildren) {child->operation();}}~Composite(){std::vector<Component*>().swap(m_vecChildren);std::cout << "~Composite() " << std::endl;}
};
class Client
{
public:void doWork(){// 创建叶节点Component* leafNode1 = new Leaf("leafNode 1");Component* leafNode2 = new Leaf("leafNode 2");Component* leafNode3 = new Leaf("leafNode 3");// 创建容器子节点Composite* childNode1 = new Composite("childNode 1");Composite* childNode2 = new Composite("childNode 2");// 将叶节点添加到容器子节点中childNode1->add(leafNode1);childNode1->add(leafNode2);childNode2->add(leafNode3);// 将容器节点添加到根容器中Composite* rootNode = new Composite("rootNode");rootNode->add(childNode1);rootNode->add(childNode2);// 调用根容器的操作方法,将逐层遍历整个组合结构并调用每个节点的操作方法rootNode->operation();//移除节点std::cout << "\n" << std::endl;childNode1->remove(leafNode2);rootNode->remove(childNode2);std::cout << "\n" << std::endl;// 调用根容器的操作方法,将逐层遍历整个组合结构并调用每个节点的操作方法rootNode->operation();delete leafNode1;delete leafNode2;delete leafNode3;delete childNode1;delete childNode2;delete rootNode;leafNode1 = nullptr;leafNode2 = nullptr;;leafNode3 = nullptr;;childNode1 = nullptr;;childNode2 = nullptr;;rootNode = nullptr;;}
};
int main()
{Client obj;obj.doWork();return 0;
}

 程序运行结果如下:

http://www.mmbaike.com/news/66320.html

相关文章:

  • 个体户经营范围网站建设培训学校加盟
  • 京网站建设网站排名优化客服
  • 浮山网站建设怎么买域名自己做网站
  • 深圳网站建设方维橙子建站官网
  • 炫酷网站源码下载网络优化公司
  • 为了做宣传网站而注册公司腾讯企点注册
  • 网站建设企业模板下载品牌运营公司
  • 金融网站建设公司排名市场营销方案
  • 关于网站开发与设计论文百度上广告怎么搞上去的
  • 杭州恒彩装饰公司怎么样邯郸网站优化公司
  • 工业设计软件有哪些软件搜索引擎优化的英语简称
  • qq中心官方网站seo建站是什么意思
  • 做网站后端的是什么部门灰色行业怎么推广引流
  • 自适应网站做mip改造免费推广网址
  • 专业的外贸行业网站开发seo整站优化方案案例
  • 旅游营销的网站建设济南seo关键词排名工具
  • 怎么做推广网站营销宣传策划方案
  • 抖音评论点赞自助网站软文广告怎么写
  • 日本做家纺的公司网站石家庄网络关键词排名
  • 做网站制作怎么样网页制作网站制作
  • 有域名和虚拟服务器后怎么做网站企业网站推广优化公司
  • 反网站搭建一条龙网络营销推广活动有哪些
  • 江苏建设人才网电子证书查询成都网站seo服务
  • 网站搭建好后被移动宽带屏蔽怎么办写一篇软文1000字
  • 百度网站认证官网推广平台排名前十名
  • 俄文网站制作潍坊seo计费
  • Delphi 网站开发框架搜索引擎营销怎么做
  • 阜阳哪里做网站windows优化大师自动安装
  • 眉山网站设计优质外链平台
  • 做时时彩网站需要加盟北京培训学校