Visitor----------模式

原创 2004年07月12日 17:37:00

例子:

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();
}

【模式模式】模式总结

设计模式学习完了,现在脑子里就是有了一个完整的框架。前边是UML图的简单回顾,最后是面向对象思想的总结,是设计模式的指导思想。中间就是在六大原则指导下的具体模式,三种类型,23种。下面是具体的导图和设...
  • u013034640
  • u013034640
  • 2015年02月15日 14:09
  • 901

传统三层结构和MVC之于贫血模式和充血模式以及领域建模

相信很多人跟我一样,一开始在使用贫血模式的三层结构:抽象出来一个贫血的实体封装,然后把对模型的所有操作,分离出来,分离到BLL层去,然后DALL层负责把这些操作和数据库产生映射,负责读写删改的操作。 ...
  • aofengdaxia
  • aofengdaxia
  • 2012年02月09日 20:24
  • 5391

TCP流模式与UDP数据报模式

“TCP是一种流模式的协议,UDP是一种数据报模式的协议”,这句话相信大家对这句话已经耳熟能详~但是,“流模式”与“数据包模式”在编程的时候有什么区别呢?以下是我的理解,仅供参考! 1、TCP 打...
  • sooolo
  • sooolo
  • 2012年08月28日 09:39
  • 2820

观察者模式中的推模式与拉模式

观察者模式中的推模式与拉模式[摘录] 在Observer模式中区分推模式和拉模式,先简单的解释一下两者的区别:推模式是当有消息时,把消息信息以参数的形式传递(推)给所有观察者,而拉模式是当有消息时,...
  • huanghailang
  • huanghailang
  • 2012年12月20日 17:52
  • 1033

NAT模式、路由模式、桥接模式 区别对比

http://rickie622.blog.163.com/blog/static/21238811201122794240546/
  • bytxl
  • bytxl
  • 2014年06月28日 16:12
  • 4833

Chrome的隐身模式与访客模式的差异

1. 进入隐身模式 打开 Chrome。 依次点击右上角的“更多”->“打开新的隐身窗口”。 系统打开一个新的窗口 或者使用 Ctrl + Shift + n快捷键进入隐身模式,界面如下所示。 2....
  • yiifaa
  • yiifaa
  • 2017年01月10日 09:58
  • 4430

网关模式/网桥模式/旁路模式的区别

网关模式/网桥模式/旁路模式的区别如下:      EG设备有三种工作模式:网关模式、网桥模式和旁路模式,比较常用的是网关模式和桥模 式。   1、网关模式是把设备当作网络出口,支持NAT和路由选路下...
  • luckiniess
  • luckiniess
  • 2016年08月19日 16:04
  • 3433

Oracle 模式

-- Start 你可以把模式(schema)理解为文件夹。表,索引,存储过程等都必须在某个模式下。注意,模式是一个逻辑概念,从逻辑上来说,某个表在某个模式下;从物理上来说,某个表保存在某个表空间中。...
  • shangboerds
  • shangboerds
  • 2015年09月04日 14:39
  • 1781

DOCTYPE声明——标准模式与怪异模式的区别

DOCTYPE声明:告知浏览器如何解析和渲染文档 DTD:文档类型定义 分类方式一1、标准模式:浏览器按W3C标准解析执行代码 ① 如果XHTML文档包含完整的DOCTYPE,那么它一...
  • Vivian_jay
  • Vivian_jay
  • 2017年03月13日 22:24
  • 912

“飞行模式”与“离线模式”

“飞行模式”变“离线模式” 2010-03-25 04:43:00 来源: 华商网-华商报(陕西西安) 不久前,国内某航班上一位乘客由于使用手机“飞行模式”玩游戏,结果被罚了2000元,此事引...
  • LongZh_CN
  • LongZh_CN
  • 2012年09月25日 11:59
  • 1837
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Visitor----------模式
举报原因:
原因补充:

(最多只允许输入30个字)