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

零代码自助建站平台网络优化的三个方法

零代码自助建站平台,网络优化的三个方法,建站之星极速版,做外贸如何建立网站平台1.定义 在不改变数据结构的前提下,增加作用于一组对象元素的新功能。 2.动机 访问者模式适用于数据结构相对稳定的系统它把数据结构和作用于数据结构之上的操作之间的耦合解脱开,使得操作集合可以相对自由的演化。访问者模式的目的是要把处理从数据结构…

1.定义

        在不改变数据结构的前提下,增加作用于一组对象元素的新功能。

2.动机

  1. 访问者模式适用于数据结构相对稳定的系统
  2. 它把数据结构和作用于数据结构之上的操作之间的耦合解脱开,使得操作集合可以相对自由的演化。
  3. 访问者模式的目的是要把处理从数据结构分离出来。如果这样的系统有比较稳定的数据结构,又有已与变化的算法的话,使用访问者模式就是比较合适的,因为访问者模式使得算法操作的增加变得更容易。反之亦然。

        一句话总结就是,访问者不会改变原有系统的数据结构,而只是使用原有系统的数据去实现自己的功能。这个实现的功能可以自己定制,但是原有系统需要留出这样的访问者应用接口。

3.示例代码

        一台电脑中有很多组件,CPU、GPU、硬盘。维修人员对电脑进行整体维修时,需要对各部件依次进行维修,而且每部件具体的维修方式不同。不同的维修人员对相同的部件维修方式可能也不同。维修人员就是访问者。访问者类中实现了针对不同部件的维修方式。电脑就是被访问者。被访问者提供访问接口,使用访问者类中实现的不同部件维修方式,对内部部件进行访问。

#include <iostream>
#include <list>
using namespace std;class Visitor;//组成Computer的各组件基类
class Element
{
public:Element(string strName) :m_strName(strName) {}string GetName(){return m_strName;}//组件接受访问者访问的接口virtual void AcceptVisitor(Visitor* pVisitor) = 0;private://组件的标识名称string m_strName;
};//访问者基类,针对不同组件,提供不同的访问接口
class Visitor
{
public:virtual void VisitCPU(Element* pEle) = 0;virtual void VisitGPU(Element* pEle) = 0;virtual void VisitDISK(Element* pEle) = 0;
};//Computer类,由各组件组成,访问者访问Computer时将依次访问各组件
class Computer
{
public:~Computer(){for (Element* pElement : m_listEle){delete pElement;}}void AddElement(Element* pEle){m_listEle.push_back(pEle);}void DelElement(Element* pEle){m_listEle.remove(pEle);}//访问者访问Computer时将依次访问各组件void AcceptVisitor(Visitor* pVisitor){for (Element* pElement : m_listEle){pElement->AcceptVisitor(pVisitor);}}private:list<Element*> m_listEle;
};//访问者实现类,实现各自的访问方法
class VisitorA : public Visitor
{
public:void VisitCPU(Element* pEle){printf("Visitor A record CPU's name:%s\n", pEle->GetName().c_str());}void VisitGPU(Element* pEle){printf("Visitor A do nothing to GPU:%s\n", pEle->GetName().c_str());}void VisitDISK(Element* pEle){printf("Visitor A change DISK:%s\n", pEle->GetName().c_str());}
};class VisitorB : public Visitor
{
public:void VisitCPU(Element* pEle){printf("Visitor B do nothing to CPU:%s\n", pEle->GetName().c_str());}void VisitGPU(Element* pEle){printf("Visitor B record GPU's name:%s\n", pEle->GetName().c_str());}void VisitDISK(Element* pEle){printf("Visitor B do nothing to DISK:%s\n", pEle->GetName().c_str());}
};//组件的实现类,调用访问者相应的访问方法
class CPU :public Element
{
public:CPU(string strName) :Element(strName) {}void AcceptVisitor(Visitor* pVisitor){pVisitor->VisitCPU(this);}
};class GPU :public Element
{
public:GPU(string strName) :Element(strName) {}void AcceptVisitor(Visitor* pVisitor){pVisitor->VisitGPU(this);}
};class Disk :public Element
{
public:Disk(string strName) :Element(strName) {}void AcceptVisitor(Visitor* pVisitor){pVisitor->VisitDISK(this);}
};int main()
{Computer oComputer;oComputer.AddElement(new CPU("i9-10980XE"));oComputer.AddElement(new GPU("Titan RTX"));oComputer.AddElement(new Disk("HOF PRO M.2"));VisitorA oVisitorA;VisitorB oVisitorB;oComputer.AcceptVisitor(&oVisitorA);oComputer.AcceptVisitor(&oVisitorB);return 0;
}

4.组成结构

  1. Visitor 是抽象访问者,为该对象结构中的 ConcreteElement 的每一个类声明一个 visit 操作
  2. ConcreteVisitor :是一个具体的访问值 实现每个有 Visitor 声明的操作,是每个操作实现的部分.
  3. ObjectStructure :能枚举它的元素, 可以提供一个高层的接口,用来允许访问者访问元素
  4. Element: 定义一个 accept  方法,接收一个访问者对象
  5. ConcreteElement: 为具体元素,实现了 accept  方法

5.引用

C++设计模式——访问者模式 - 冰糖葫芦很乖 - 博客园 (cnblogs.com)

http://www.hkea.cn/news/369618/

相关文章:

  • 科技型中小企业服务网安徽搜索引擎优化seo
  • 网站建设专家排名邯郸seo营销
  • 做网站一个月20g流量够吗安全又舒适的避孕方法有哪些
  • 扫二维码直接进网站怎么做怎么提交网址让百度收录
  • 柳州建设局网站广告买卖网
  • 做外贸一般上哪些网站google play谷歌商店
  • 泉州手机网站制作如何做企业产品推广
  • 徐州手机网站设计汕头网站建设优化
  • 有没有专业收费做网站优化的百度百科优化排名
  • 常州网站建设哪家便宜江西seo推广软件
  • 如何用pageadmin做网站品牌宣传策略有哪些
  • 网站免费优化软件需要优化的地方
  • 24小时学会网站建设下载厦门百度竞价开户
  • 怎样学做网站网站权重等级
  • 做网站好还是做淘宝好北京seo推广
  • 郑州门户网站建设哪家好网站首页不收录
  • 网站制作营销型哪些网站可以发广告
  • 最新政府网站建设理念广州头条新闻最新
  • 济宁网站建设神华线上推广的三种方式
  • 我要表白网站在线制作如何做网站的教程
  • 福州论坛建站模板策划网络营销活动
  • 网站建设 天津百度市场应用官方app
  • 动态网站制作流程友情链接的定义
  • 企业网站开发方案免费建立一个网站
  • 网站引导页面制作的四个任务名称推广引流的10个渠道
  • 南宁网站建设制作后台网站关键词优化价格
  • 微信小程序商城制作公司宁波seo推广服务
  • 响应式购物网站公司seo是什么意思
  • 360未经证实的网站如何做电商运营方案
  • 网站建设类公司排名营销方案范文100例