例子:

class Modem
{
public:
    virtual void Dial(CString pno) =0;
    virtual void Handup() =0;
    virtual void Send(char c) =0;
    virtual void Recv() = 0;
    virtual accept(ModemVisitor v)=0;
};
class HayesModem :public Modem
{

public:
    void Dial(CString pno){}
    void Handup(){}
    void Send(char c) {}
    void Recv() {}
    virtual accept(ModemVisitor v)
    {
        v.visit(this);
    }
};
class ZoomModem:public Modem
{
public:
    void Dial(CString pno){}
    void Handup(){}
    void Send(char c){}
    void Recv(){}
    virtual accept(ModemVisitor v)
    {
        v.visit(this);
    }
};
class ModemVisitor
{
public:
    void visit(HayModem modem) = 0;
    void visit(ZoomModem modem) = 0;
};
class ModemCfg :public ModemVisitor
{
public:
    void visit(HayerModem modem)
    {
        printf("I am HayerModem!");
    }
    void visit(ZoomModem modem)
    {
        printf("I am ZoomModem!");
    }
};

void main()
{
    ModemCfg* pm = new ModemCfg();
    HayerModem* ph = new HayerModem();
    ZoomModem* pz = new ZoomModem();
    vector vectmodem;
    vectmodem.push_back (ph);
    vectmodem.push_back (pz);
    for(int i = 0;i< vectmodem.size();i++)
    {
        ((Modem*)vectmodem[i]).accept(pm);
    }

vectmodem.clear();
}

Visitor----------模式相关推荐

  1. 行为模式之Visitor模式

    1.意图 表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作 2.适用性 (1)一个对象结构包含很多类对象,它们有不同的接口,而你想对这些实施一些 ...

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

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

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

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

  4. 设计模式 - Visitor 模式(访问者模式)

    作用:表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作.  UML结构图: 解析: Visitor模式把对结点的访问封装成一个抽象基类,通过派生 ...

  5. Visitor模式学习

    意图: 表示一个作用于某对象结构中的各元素的操作.它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作. 似乎理解很麻烦,其实说白了,就是动态的给已经写好的代码(类)加入新的功能! 当然,首 ...

  6. 设计模型之Visitor模式-图书馆管理系统应用C++实现

    今天看到<<软件设计师>>面向对象第七章讲到几种设计模式,其中一种为Visitor模式.这种设计模式通过访问者对象的建立,在访问过程中将访问者作为参数传到被访问对象的函数中,实 ...

  7. visitor 模式

    考虑一下设计一个可以包含长方形.正方形.圆形以及文字的视图类.因为视图中每种元素的显示方式都不一样,所以我们很容易做出如下的设计: 在这里,我使用了COMPOSITE模式.对于COMPOSITE模式, ...

  8. Visitor模式与Acyclic Visitor

    visitor模式最基本的是访问者和被访问者.它的优势是不用改变被访问类的任何结构就可以对被访问者施加新的操作,前提是增加一个访问者的子类.其实就是用增加访问者子类的方法替代被访问者方法的增加. 用你 ...

  9. visitor模式入门

    访问差异类型的集合类--visitor模式入门 一,问题提出 访问同一类型的集合类是我们最常见的事情了,我们工作中这样的代码太常见了. 1 Iterator ie  =  list.iterator( ...

  10. visitor模式本质

    http://topic.csdn.net/t/20051231/14/4492965.html visitor模式的本质是在不修改类结构的前提下为类及所有派生类添加一个"虚函数" ...

最新文章

  1. 跟我学Springboot开发后端管理系统5:数据库读写分离
  2. Linux下用户组、文件权限详解
  3. 为什么let在php中报错,PHPlet在Windows下的安装
  4. Jmock 原理简单说明
  5. JHipster入门,第2部分
  6. FD.io VPP用户文档:会话层架构与VPP应用
  7. 错误解决:release' is unavailable: not available in automatic reference counting mode
  8. ORACLE数据库自带的opath,oracle11.2.0.4.0 数据库安装
  9. 安卓隐藏摄像_隐藏摄像头探测器
  10. 渐变的alert_好看的alert样式或者弹窗样式
  11. 百战程序员JavaWeb系列教程-监听器视频教程
  12. cisp软考书籍【注册信息安全专业人员培训教材】
  13. 压缩包文件密码如何解密
  14. 综合交易平台API技术开发指南
  15. 电脑开机后显示屏只显示品牌Logo就黑屏
  16. JAVA TOOL-【1】配置
  17. linux删除pdf密码
  18. cosh()函数以及C ++中的示例
  19. 什么是电压跟随器,它有哪些特点,应用于哪些场合?
  20. 第五集 插肩而过茶卡湖,朝发夕至格尔木

热门文章

  1. android studio 打包cocos creator项目
  2. 软件设计之“信雅达”
  3. Linux内核编译依赖
  4. JavaScript图片轮播图
  5. Lantek.v27-ISO 1DVD(钣金专家)
  6. 【软件测试】软件测试基础理论
  7. 给matlab输出excel加表头
  8. Datawhale数据挖掘 数据分析笔记
  9. java mail 签名_java mail实现Email的发送,完整代码
  10. 从端到云——工业物联网项目全栈快速开发