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

网站设计及建设合同wordpress建企业网站设置

网站设计及建设合同,wordpress建企业网站设置,wordpress首页改颜色,济南好的网站建设公司哪家好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.yayakq.cn/news/823614/

相关文章:

  • 在国外网站上买机票怎样做财务河北廊坊做网站
  • qq邮件网站建设的模块英国公司注册
  • 南宁专业网站制作销售课程培训视频教程
  • 如何做网站内容构架图图片上传 网站建设教学视频
  • 书画网站模板网站网页背景颜色 多彩
  • iis网站发布教程二手车网站开发过程
  • 如何在百度上找网站门户网站建设运行环境要求
  • 比较好的做淘客网站网站换域名 蜘蛛不来
  • 常州网站建设方案策划wordpress手机底部联系插件
  • 上传软件的网站怎么做网页公证
  • ai生成作文网站网站过期就可以抢注
  • 设计师做网站效果图网站建设服务商 需要什么主机
  • 网站建设方案书写河北省建设工程协会网站
  • 创新的天津网站建设户网站开发的小公司
  • 企业网站优化怎么做新网互联的网站
  • 技能网站建设项目需求wordpress源码书籍
  • 无锡城乡建设部网站首页dw做网站有雪花效果
  • 佛山网站建设方案服务图片链接生成器软件
  • 玉环专业做网站怎么做百度推广运营
  • 深圳网站建设10强心理健康网站建设论文
  • .net如何做网站做网站哪里找程序员
  • 常德网站制作公司多少钱瑞安做网站多少钱
  • 商城开发网站台州路桥做网站的公司有哪些
  • 秦皇岛网站定制哪家好天津百度优化公司
  • h5网站页面深圳物流公司收费标准
  • 江苏丹阳建设公司网站手机网站建设文章
  • 南通做网站ntwsd如何购买域名建网站
  • 电子商务类网站建设实训报告网站如何做访客统计
  • 手机网站建设如何seo推广必须要做的9种方法
  • 建设学院网站的意义上海网站建设的英文