回调模式

回调用的很多,但是之前一直不是很理解,刚又看了点资料.现在整理下.


网上看到一个例子,很经典,如下


某天,我打电话向你请教问题,当然是个难题,^_^,你一时想不出解决方法,我又不能拿着电话在那里傻等,于是我们约定:等你想出办法后打手机通知我,这样,我就挂掉电话办其它事情去了。过了XX分钟,我的手机响了,你兴高采烈的说问题已经搞定,应该如此这般处理。故事到此结束。


    这个例子说明了“异步+回调”的编程模式。其中,你后来打手机告诉我结果便是一个“回调”过程;我的手机号码必须在以前告诉你,这便是注册回调函数;我的手机号码应该有效并且手机能够接收到你的呼叫,这是回调函数必须符合接口规范。


这个例子中:(先看完下面的代码再看这个总结)

      答案是在你那里,我什么都不知道.所以我跟你约定.你要以某个方式告诉我答案.(于是接口的约定就诞生了)

这个时候,你要实现我们之间的约定,好方便我获取答案.(于是你 就要实现这个接口,并实现接口里的方法)

      接着,你想出答案了.于是你打算告诉我答案.于是,你打电话给我了(创建了 我的实例)

      但是你要告诉我你是谁啊,对吧?  所以,你通过我提供的一个方式让我得知你是谁.并且这个你还是必须实现了我们之间约定的你(这个时候就是调用这个方法 public void setCallfuc(MyCallInterface mc) )

      然后我知道你是谁了,并且这个你还是之前约定好了一种得到答案方式的你(由于接口约定好了,所以我知道你肯定有一个 method() 方法 .)

      于是我问你答案是多少 (调用 method() )


public class 我
{  
    public void setCallfuc(MyCallInterface mc)  
    {  
        mc.method();  
    }  
  
} 

约定的接口

public interface MyCallInterface  
{  
    public void method();  
  
}  

public class 你 implements MyCallInterface  
{  
    public void method()  
    {  
       System.out.println("回调");  
    }  
  
    public static void main(String args[])  
    {  
       Caller call = new Caller();  
       call.setCallfuc(new B());  
    }  
}  



总结:

    谁要返回结果,谁就要实现约定的接口.(谁返回,谁实现)

又如:

    B类中有方法调用A类中的 (A甲) 方法 ,然后,(A甲) 方法中又调用了B类的 (B乙) 方法.

这个时候,对于 B来说 ,B已 就是回调方法.






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值