注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

I choose

sailing with my heart ......

 
 
 

日志

 
 

回调函数 与 回调机制  

2010-05-24 18:59:25|  分类: 笔试题库 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1.  什么是回调函数

    回调函数(callback Function),顾名思义,用于回调的函数。  回调函数只是一个功能片段,由用户按照回调函数调用约定来实现的一个函数。回调函数是一个工作流的一部分,由工作流来决定函数的调用(回调)时机。回调函数包含下面几个特性:
  •     属于工作流的一个部分;
  •     必须按照工作流指定的调用约定来申明(定义);
  •     他的调用时机由工作流决定,回调函数的实现者不能直接调用回调函数来实现工作流的功能;
   

2. 回调机制

    回调机制是一种常见的设计模型,他把工作流内的某个功能,按照约定的接口暴露给外部使用者,为外部使用者提供数据,或要求外部使用者提供数据。
回调函数 与 回调机制 - 幽绿丛林 - 我的博客

     如上图所示,工作流提供了两个对外接口(获取参数、显示结果),以回调函数的形式实现。
  •  “获取参数”回调函数,需要工作流使用者设定工作流计算需要的参数。
  •  “显示结果”回调函数,提供计算结果给工作流使用者。


2.  回调机制应用

   使用回调机制,可以为工作流实现扩展。 可以把工作流中需要用户干预的,或需要提供给用户的数据以回调的模式提供给用户。而用户不需要知道整个工作的流程,只需知道回调函数的说明就可以使用工作流模块提供的功能,这对信息的隐藏也是有作用的。

3. 回调机制的实现形式

  •     回调函数
  •     虚拟函数
  •     事件




example: 以虚函数实现回调机制
class CWorkFlow
{
    void init()
    {
        _a = 0;
        _b = 0;
    }

    int _a;
    int _b;
public:

    void Start()
    {
         //  初始化
         init();
         // 调用处理数据
         Handle( a, b );
         // 报告结果
         Report( a, b );
    }

    virtual void Handle( int &a, int &b ) = 0;
    virtual void Report( int iRet) = 0;
};


class CMain :
    public CWorkFlow
{
public:
    void Handle( int &a, int &b )
    {
        a = a + b/2;
    }

    void Report( int iRet)
    {
        printf("iRet = %d\n", iRet);
    }
};

// application

int main()
{
    CMain main;
    main.Start();
}

工具软件下载请到馒头软件:http://www.mantoo.com.cn
  评论这张
 
阅读(602)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017