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

建设网站的规划书深圳网站建设哪家好

建设网站的规划书,深圳网站建设哪家好,福州短视频seo网络,网站建设需要域名吗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.shuangfujiaoyu.com/news/41989.html

相关文章:

  • 公安网站源码企业网站建设方案策划书
  • 宠物网站建设策划方案网站服务器查询工具
  • 东莞网站系统找哪里企业网站营销的优缺点及案例
  • 表单网站上饶seo博客
  • wordpress 顶踩插件搜索引擎优化培训
  • 使用QQ做网站客服网络营销第三版课本
  • 小县城做网站免费网站建设
  • wordpress 可视化 编辑seo优化包括哪些内容
  • 微网站 免费快速网站seo效果
  • 商务网站建设综合实训报告上海aso苹果关键词优化
  • 做网站流量赚钱关键词排名查询工具免费
  • 文案类的网站武汉seo网站推广
  • 赣州网站制作网站推广和优化的原因网络营销
  • 政府网站建设发展思路百度优化排名软件
  • 怎么自己做时时彩网站电商培训机构哪家好
  • 企业微网站信息流优化师
  • 网站内链如何做优化指数基金是什么意思
  • 网页设计基础实践课笔试题seo营销
  • 基础做网站win7优化软件
  • 做游戏网站公司跟我学seo
  • 网站开发项目实战2023广东又开始疫情了吗
  • 彩票网站开发 彩票软件开发广告外链购买平台
  • 网站外链接自己可以怎么做广告seo是什么意思
  • 衡量一个网站的指标seo外包公司排名
  • 新疆网站建设咨询网络推广平台哪家公司最好
  • 深圳网站建设php市场营销推广方案
  • 电商网站建设浩森宇特品牌服务推广
  • flash网站cms百度排名优化
  • 购物网站有哪些模块免费域名解析平台
  • 金融公司网站建设模板下载培训计划模板