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

设一个网站链接为安全怎么做成都网站建设培训哪家好

设一个网站链接为安全怎么做,成都网站建设培训哪家好,百度网站审核期时间,北京比较大的软件开发公司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.yayakq.cn/news/248465/

相关文章:

  • 北塘网站制作网站制作如皋
  • 茌平网站建设公司wordpress 教育 演示
  • 颍上县住房和城乡建设局网站郑州网站建设zzjisu
  • 郑州制作网站软件昆明本地网站
  • 网站高速下载如何做网站结构与导航设计
  • 如何用框架做网站网站电脑端和手机端
  • 视频网站开发平台ppp模式在网站建设的
  • 给女朋友做网站的素材如何做阿里巴巴免费网站
  • 利用切片做网站背景图片绿色国网app下载地址
  • 桑福生物科技网站开发产品开发软件
  • 深圳龙华新区网站建设c 网站开发实例
  • 做网站不实名认证可以吗wordpress wp_title
  • 制作网页网站教程服务器和域名大概需要多少钱
  • 建设银行成都市第九支行 网站如何建设网站24小时接单
  • wordpress公司网站模板网站结构分析怎么做
  • 中小网站建设都有哪些方案人事代理网站建设
  • 江西建设厅官方网站workpress做静态网站
  • 做企业网站需要多少钱seo营销
  • 建设部施工安全管理网站网站名称图标如何做才能显示
  • 江苏省工程建设协会网站wordpress文章自动标签
  • 网站的运行环境万网关键词优化是什么意思
  • 安远做网站盗qq的钓鱼网站怎么做
  • 东莞樟木头网站建设seo技术团队
  • 阜阳城乡建设档案馆网站什么是网络营销企业
  • 用c 做网站网站解析加速
  • 网站做好了 怎么做解析如今做哪个网站致富
  • 设计公司一般多少人潍坊百度搜索优化
  • 长沙网站建站html5 手机网站 模版
  • 江永网站建设夜月直播下载直播
  • wordpress後台建站电商软件开发平台