1.c语言中回调基本都过函数指针来完成。c++中主要通过接口的方式完成回调。而visitor就是实现接口回调的一种方式。

1.首先定义个一个接口visitor类,

class classVisitor
{
public:virtual: void oncallBack(int a,char*b)=0;};

2.要获得回调结果的(father)类需要继承这个visitor类,并实现oncallBack接口。

void father::oncallBack(int a, char * b){
m_a = a;
m_b = b;
}

3.底层通过调用回调函数oncallBack函数,回调信息。底层需要实现一个setVisitor函数方便上层传递上层对象,并继承提供setVistitor的接口类

int father::int()
{
son->setVisitor(this);
}

一共有四个类,1个上层类:获取回调信息,实现回调接口。

       1个底层类:实现设置访问者接口,上传信息。

       1.含有回调函数的接口类,供给上层继承。

       1.个含有设置访问接口的类,供给下层继承。

       3.4两个类可实现为类中类,也可单独实现,就是将两个抽象类联系到了一起。

转载于:https://www.cnblogs.com/mcy0808/p/10832267.html

c++设计模式:访问者模式(visitor模式)相关推荐

  1. 设计模式--访问器(Visitor)模式

    模式定义 表示一个作用于某对象结构中的各元素的操作,使得可以在不改变(稳定)各元素的类的前提下定义(扩展)作用于这些元素的新操作(变化) 类图 要点总结 Visitor模式通过所谓双重分发(doubl ...

  2. 设计模式之访问者模式(Visitor)

    访问者模式(Visitor) 在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法.通过这种方式,元素的执行算法可以随着访问者改变而改变 主要将数据结构与 ...

  3. java visitor_Java 的双重分发与 Visitor 模式

    双重分发(Double Dispatch) 什么是双重分发? 谈起面向对象的程序设计时,常说起的面向对象的「多态」,其中关于多态,经常有一个说法是「父类引用指向子类对象」. 这种父类的引用指向子类对象 ...

  4. k8s里的Visitor模式学习

    Visitor模式 visitor模式在k8s源代码里面比较场景,刚接触,理解起来有点绕,体会其本质后,发现就是callback的一种实现 示例代码 type Callback func()type ...

  5. 设计模式之访问者模式(Visitor)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  6. 设计模式:访问者(Visitor)模式

    设计模式:访问者(Visitor)模式 一.前言    什么叫做访问,如果大家学过数据结构,对于这点就很清晰了,遍历就是访问的一般形式,单独读取一个元素进行相应的处理也叫作访问,读取到想要查看的内容+ ...

  7. 设计模式之访问者(visitor)模式

    在患者就医时,医生会根据病情开具处方单,很多医院都会存在以下这个流程:划价人员拿到处方单之后根据药品名称和数量计算总价,而药房工作人员根据药品名称和数量准备药品,如下图所示. 在软件开发中,有时候也需 ...

  8. 设计模式(17) 访问者模式(VISITOR) C++实现

    意图: 表示一个作用于某对象结构的各元素的操作.它使你可以再不改变各元素的类的前提下定义作用于这些元素的新操作. 动机: 之前在学校的最后一个小项目就是做一个编译器,当时使用的就是访问者模式. 在静态 ...

  9. 设计模式学习笔记——访问者(Visitor)模式

    设计模式学习笔记--访问者(Visitor)模式 @(设计模式)[设计模式, 访问者模式, visitor] 设计模式学习笔记访问者Visitor模式 基本介绍 访问者案例 类图 实现代码 Visit ...

  10. [设计模式] 23 访问者模式 visitor Pattern

    在GOF的<设计模式:可复用面向对象软件的基础>一书中对访问者模式是这样说的:表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作.访问 ...

最新文章

  1. 如何让ie 7 支持box-shadow
  2. JSONUtil,POJO实体类和JSON互转,
  3. 服务器03系统怎么设置网站,Windows 2003系统路由服务的配置方法
  4. Java中的DatagramPacket与DatagramSocket的初步
  5. 公平锁非公平锁的实际使用_3. redisson源码公平锁之队列重排序
  6. 视频光端机在安防监控工程中的常见技术问题
  7. np.stack()函数详解 ==>堆叠 【类似于torch.stack()】
  8. Android 系统(197)---USB VID
  9. python_argparse简介
  10. 【带权并查集经典例题】银河英雄传说【同POJ 1988 cube stacking】
  11. c++ const 修饰变量位置含义
  12. 如何避免出现SQL注入漏洞
  13. 时速云与炎黄盈动强强联手,打造企业 IT 变革新未来
  14. startup_LPC17XX.s 启动文件分析
  15. 圆圈中最后剩下的数字 ----《剑指offer》面试题45
  16. 运用JAVA开发安卓程序
  17. 花前挥手别伊人,月下纵马扬轻尘,红尘游历,荡剑江湖。四方辗转,看千山飞鸟逐;万里飘蓬,叹海角天涯路。夜风萧瑟雨凄楚,相思情入梦,孤影独对窗前烛,离别意难书。何时平尽心中愿,从此相守不离疏,岁岁年年情深
  18. Windows 2003和XP之间的异同
  19. Android偏好设置的使用
  20. ArcGISEngine学习(1)

热门文章

  1. TeX 家族(TeX, pdfTeX, XeTeX, LuaTeX, LaTeX, pdfLaTeX, XeLaTeX …)
  2. 获取其他线程的数据用 queue, 多进程Q
  3. 转载--SqlAlchemy ORM 学习
  4. ios中通过ALAssetsLibrary获取所有图片
  5. vs2013新建web项目异常 0x80070002 处理
  6. Linux下mysql新建账号及权限设置
  7. wordpress--SEO们的福音
  8. MT6580启动流程
  9. sysfs API总结
  10. yum安装时报错,提示/var/run/yum.pid 已被锁定,解决办法