zoukankan      html  css  js  c++  java
  • 关于.NET中委托与事件实现整理

    委托与事件是.NET Frame中功能很强大并十分重要的构造.事件,作为组件间的通信方法,已被广泛应用到GUI程序中.
    委托相当于函数指针,任何.NET语言都可以创建并使用委托.它是事件机制的基础.
    事件类似JAVA中的对于ActionListener等一系列的响应与处理.
    
    --委托 
     定义: __delegate 返回类型 委托名(参数);
    
     配置调用:
     静态调用 委托名* 委托对象名 = new 委托名(0,&类::静态方法)
     动态调用 委托名* 委托对象名 = new 委托名(类对象名,&类::动态方法)
    
     这里面的动,静态方法均满足委托定义的返回类型与参数.
    
     调用:
     委托对象名.invoke(参数);
     //类似Command Pattern
    
     <实现多播> Delegate::Combine(..,..)
     实际返回类型是Object *,所以均要dynamic_cast<委托名 *>来cast才行
     <减少播项> Delegate::Delete(..,..)
     第一个参数表示从哪个组删除
           第二个参数表示删除哪一个
    
    --事件
    步骤:
     1 从事件源开始
    
         //n个委托 eg: __delegate void EventHandler(void);
     编写事件源类
     //声明n个event
         __event 委托名(eg: EventHandler)* onEvent; //委托变事件
    
         定义触发函数的事件
         返回类型(由Raise函数内容而定)Raise(参数)
         {
            CALL onEvent(参数);
     }
    
     2 实现事件接受器类 类似Receiver
     包含事件源的对象src,并实现处理事件的方法void Event(void);
     src->onEvent += new EventHandler(this,&事件接受器类名::Event(void));
    
     3 _tmain
     new 一个事件源类对象
     new 一个事件接受类对象,并将事件源对象作为参数传入
    
     //引发事件
     事件源类对象->Raise(参数)
    
     结构封装的很好.又想到设计模式了~~不过好象没有跟现学到的模式搭上关系,不过有OO和重用的思想就可以了.
  • 相关阅读:
    3dsmaxunity3d
    libav android移植交叉编译
    libav 由显卡中读取数据制作视频
    超详细mysql left join,right join,inner join用法分析
    VC常见入门问题总结
    c#皮肤美化
    论坛
    vc中文件的读写操作
    MySQL的mysqldump工具的基本用法
    perl产生随机数
  • 原文地址:https://www.cnblogs.com/zell/p/297264.html
Copyright © 2011-2022 走看看