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

企业网站功能建筑施工特种作业证查询官网

企业网站功能,建筑施工特种作业证查询官网,wordpress 建立第二个网站,外包制作app1.定义 在不改变数据结构的前提下#xff0c;增加作用于一组对象元素的新功能。 2.动机 访问者模式适用于数据结构相对稳定的系统它把数据结构和作用于数据结构之上的操作之间的耦合解脱开#xff0c;使得操作集合可以相对自由的演化。访问者模式的目的是要把处理从数据结构…1.定义 在不改变数据结构的前提下增加作用于一组对象元素的新功能。 2.动机 访问者模式适用于数据结构相对稳定的系统它把数据结构和作用于数据结构之上的操作之间的耦合解脱开使得操作集合可以相对自由的演化。访问者模式的目的是要把处理从数据结构分离出来。如果这样的系统有比较稳定的数据结构又有已与变化的算法的话使用访问者模式就是比较合适的因为访问者模式使得算法操作的增加变得更容易。反之亦然。 一句话总结就是访问者不会改变原有系统的数据结构而只是使用原有系统的数据去实现自己的功能。这个实现的功能可以自己定制但是原有系统需要留出这样的访问者应用接口。 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:listElement* m_listEle; };//访问者实现类实现各自的访问方法 class VisitorA : public Visitor { public:void VisitCPU(Element* pEle){printf(Visitor A record CPUs 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 GPUs 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.组成结构 Visitor 是抽象访问者为该对象结构中的 ConcreteElement 的每一个类声明一个 visit 操作ConcreteVisitor 是一个具体的访问值 实现每个有 Visitor 声明的操作是每个操作实现的部分.ObjectStructure 能枚举它的元素 可以提供一个高层的接口用来允许访问者访问元素Element 定义一个 accept  方法接收一个访问者对象ConcreteElement 为具体元素实现了 accept  方法 5.引用 C设计模式——访问者模式 - 冰糖葫芦很乖 - 博客园 (cnblogs.com)
http://www.dnsts.com.cn/news/280049.html

相关文章:

  • 宝安网站设计服务wordpress 斜杠
  • 站长统计app下载大全网站建设安全问题
  • 温州机械网站建设百度网盘网页版
  • wap网站建设免费wordpress在线音乐
  • 网站云主机吗企业邮箱是哪个
  • 做spa会所网站公司网站空间要多大
  • 合肥网站优化价格民法典建设工程施工合同
  • 福田网站设计包图网图片素材
  • 公司网站制作公司倒闭凡科网站做的作品如何发布
  • 莱芜网站建设自助建站优化网站备案主体变更
  • 租一个网站服务器多少钱注册城乡规划师教材
  • P2P网站怎么建设北京高端网站建设公司浩森宇特
  • 门户网站英文版建设h56wcom什么网站
  • 中国中小企业网站建设现状台州首页关键词优化
  • 创网址宁波seo公司排名榜
  • 南宁网站建设公司网站开发广告宣传语
  • 网站开发快递文件北京网站建设公司华网天下下
  • 案例剖析网站海口网络公司网站建设
  • 北京专业做网站河北省住建和城乡建设厅网站
  • 网站建设先进个人材料net网站建设
  • org做后缀的网站哈尔滨seo网络推广
  • 狮山建网站免费自做网站
  • 做视频网站盈利模式企业网站域名备案流程
  • 重庆网站建设公司有哪些wordpress api python
  • 网络商城网站怎样做关键词优化免费行情网站下载大全
  • 罗湖网站建设罗湖网站设计百度软件应用中心下载
  • 网站制作公司网站建设网站制作南宁
  • 网站不备案会怎...义乌产品设计公司
  • 展示页网站怎么做排名wordpress图片编辑器
  • 昆明做网站费用重庆工程建设招标网官方网站