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

重庆锅炉网站建设费用seo人员招聘

重庆锅炉网站建设费用,seo人员招聘,保定制作公司网站,做网站廊坊概念 访问者模式是设计模式行为模式的一种,主要是用于将算法和所作用的对象隔离开来。 访问者模式通过将算法封装在访问者对象中,使得算法可以独立于对象结构变化。对象结构中的每个元素都接受访问者对象,并将自身传递给访问者对象&#xf…

概念

访问者模式是设计模式行为模式的一种,主要是用于将算法和所作用的对象隔离开来。

访问者模式通过将算法封装在访问者对象中,使得算法可以独立于对象结构变化。对象结构中的每个元素都接受访问者对象,并将自身传递给访问者对象,从而执行操作。

适用场景

1、如果需要对一个复杂结构进行所有元素进行操作,而又不想去修改原始结构的时候,可以使用访问者模式。

2、如果在所作用的对象添加一些附加操作,而不能去修改所作用的对象结构的时候,可以使用访问者模式。

3、当一些行为在类的层次结构中的一些类有意义,而对于其他类没有意义的时候,可以使用此模式。

创建方式

1、创建一个访问者类,在此类中实现一系列的操作函数。

2、在被操作类中添加一个接口,用于接受访问者对象,并通过访问者对象去调用访问者的操作函数。

3、在客户端使用的时候创建访问者,并将访问者通过参数传递给被操作的类中。进行调用。

类关系图

在这里插入图片描述

示例代码

#include "FangWenZheMoShi.h"
int main()
{std::cout << "欢迎东哥来到设计模式的世界!\n";//创建访问者类对象VisitorInterFace* vistior1 = new ConcreteViritor1();VisitorInterFace* vistior2 = new ConcreteViritor2();//创建元素对象ConcreteItem1* item1 = new ConcreteItem1();item1->setVisitor(vistior1);item1->callVisitor();item1->setVisitor(vistior2);item1->callVisitor();cout << "==========================" << endl;ConcreteItem2* item2 = new ConcreteItem2();item2->setVisitor(vistior1);item2->callVisitor();item2->setVisitor(vistior2);item2->callVisitor();
}
#pragma once
#include <iostream>
#include <string>using namespace std;//访问者接口类
class VisitorInterFace
{
public:VisitorInterFace() {}~VisitorInterFace() {}virtual void handle1() {}virtual void handle2() {}string name;};//元素接口类
class FItemInterface
{
public:FItemInterface() {}~FItemInterface() {}VisitorInterFace* m_visitor;virtual void setVisitor(VisitorInterFace* visitor) {m_visitor = visitor;}
};//具体访问者类1
class ConcreteViritor1 : public VisitorInterFace {
public:ConcreteViritor1() {name = "ConcreteViritor1";}~ConcreteViritor1() {}void handle1() {cout << "具体访问者1 ConcreteViritor1 的 handle1 函数" << endl;}void handle2() {cout << "具体访问者1 ConcreteViritor1 的 handle2 函数" << endl;}
};//具体访问者类2
class ConcreteViritor2 : public VisitorInterFace {
public:ConcreteViritor2() {name = "ConcreteViritor2";}~ConcreteViritor2() {}void handle1() {cout << "具体访问者1 ConcreteViritor2 的 handle1 函数" << endl;}void handle2() {cout << "具体访问者1 ConcreteViritor2 的 handle2 函数" << endl;}
};//具体的元素类
class ConcreteItem1 : public FItemInterface {
public:ConcreteItem1() {}~ConcreteItem1() {}void setVisitor(VisitorInterFace* visitor) {m_visitor = visitor;}void callVisitor() {if (m_visitor) {cout << "具体元素类1 ConcreteItem1 调用 "<< m_visitor->name << " 的handle1 函数" << endl;m_visitor->handle1();}}
};//具体的元素类
class ConcreteItem2 : public FItemInterface {
public:ConcreteItem2() {}~ConcreteItem2() {}void setVisitor(VisitorInterFace* visitor) {m_visitor = visitor;}void callVisitor() {if (m_visitor) {m_visitor->handle2();cout << "具体元素类1 ConcreteItem2 调用 " << m_visitor->name << " 的handle2 函数" << endl;}}
};
欢迎东哥来到设计模式的世界!
具体元素类1 ConcreteItem1 调用 ConcreteViritor1 的handle1 函数
具体访问者1 ConcreteViritor1 的 handle1 函数
具体元素类1 ConcreteItem1 调用 ConcreteViritor2 的handle1 函数
具体访问者1 ConcreteViritor2 的 handle1 函数
==========================
具体访问者1 ConcreteViritor1 的 handle2 函数
具体元素类1 ConcreteItem2 调用 ConcreteViritor1 的handle2 函数
具体访问者1 ConcreteViritor2 的 handle2 函数
具体元素类1 ConcreteItem2 调用 ConcreteViritor2 的handle2 函数
http://www.dtcms.com/a/505036.html

相关文章:

  • 网站推广指的是什么flash网站建设技术
  • 智能生产力:绚星从趋势洞察到落地实践
  • 网站制作费用入什么科目广州域名备案
  • 百度网站安全检测平台怎么做视频网站首页
  • 基于网站的网络营销方法有哪些专业的网站建设联系方式
  • 3.1.1 关系型数据库与图数据库的对比
  • dedecms网站模板下载长沙网站排名团队
  • 南昌为来创意网站建设公司专业网站建设必要性
  • 泽成seo网站排名怎样做类似于优酷的视频网站
  • LangGraph 源码学习总结 3-单结点图的执行分析
  • [Agent] ACE(Agentic Context Engineering)和Dynamic Cheatsheet学习笔记
  • 巢湖建设网站做网站前需要做哪些事情
  • 毕节市建设厅网站wordpress有点尴尬诶该页无法显示
  • 工业园做网站的公司传媒公司官网
  • Servlet 发送电子邮件
  • swipe类网站栾城区城乡建设局网站
  • 《小白学随机过程》第二章:随机过程——常见的随机过程(线性高斯过程和卡尔曼滤波)
  • 诚信通国际网站怎么做wordpress做视频网站
  • 做app和做网站相同和区别农村建设网站
  • 曲阜市古建设计院网站网站 网络营销价值
  • 稷山网站建设网站本地建设
  • 专业网站开发哪家公司好oa系统办公平台
  • 容桂网站制作动态网站建设新手看什么书
  • 浏览器网站在线进入做网站论坛 前置许可
  • 城乡建设环保部网站鼎诚网站建设
  • 中国建设信息网站谷歌浏览器搜索引擎入口
  • app网站公司wordpress禁止谷歌
  • 优度网站建设python的网站开发
  • wamp网站根目录配置汇源企业网络营销策划
  • 个人网站备案技巧制作网站的全过程