zoukankan      html  css  js  c++  java
  • delphi 回调函数

    program Project2;
    
    {$APPTYPE CONSOLE}
    
    uses
      SysUtils;
    
    type
        //定义一个对象事件方法
       TCallbackFunc = function (i: Integer): Integer of object;
    
       TMyCallBackObject = class
        private
         FcallBack: TCallbackFunc;
        function SetcallBack(const Value: TCallbackFunc): Integer;
    
        public
          function call(param: Integer): Integer;
       end;
    
       TA = class
         public
            function doSomeThing(i: Integer): Integer;
       end;
    
    {TA}
    function TA.doSomeThing(i: Integer): Integer;
    begin
       Result := i;
    end;
    
    
    var
      c: TMyCallBackObject;
      I: Integer;
      t: TA;
    
    
    { TMyCallBackObject }
    
    function TMyCallBackObject.call(param: Integer): Integer;
    begin
        Result := 0;
    
       if Assigned(FcallBack) then
       //调用
         Result:= FcallBack(param);
    
    end;
    
    function TMyCallBackObject.SetcallBack(const Value: TCallbackFunc): Integer;
    begin
        Self.FcallBack := Value;
    end;
    
    
    begin
      c := TMyCallBackObject.Create;
      t := TA.Create;
    
      c.SetcallBack(t.doSomeThing);
      I := c.call(9);
    
      write(i);
      Readln;
      c.Free;
      t.Free;
    
    end.

    回调函数

    回调(CallBack)函数就是一种两个对象之间的通知方法。被通知者事先约定好发生某种情况时的处理函数,在该情况发生时发起通知者调用该处理函数以完成回调

    类似观察者模式, 一个对象(发布者)内部公布一个接口(TCallBackFunc), 对它感兴趣的类(TA)(订阅者)实现的具体执行方法(doSomething)

    http://www.cnblogs.com/pengshaomin/archive/2012/09/29/2708923.html

  • 相关阅读:
    模拟乒乓球双打和单打比赛
    关于zip内置函数的应用及在 Python 2 和 3 的不同之处
    计算文本平均列数
    四则运算
    Python跳一跳小游戏
    数据库
    类和正则表达
    带进度条的圆周率计算
    球队预测
    自己的第一个网页
  • 原文地址:https://www.cnblogs.com/findumars/p/5321376.html
Copyright © 2011-2022 走看看