回调(Callback)就是在调用一个A方法的时候,指定传入另外一个方法B,在制定的位置或者是特殊的事件执行后自动的调用方法B。也就是说,回调就是在某些事件触发后,需要给予我们通知用来执行一些指定的工作。
以生活中的例子来说:我们去银行里面取钱,我们找到柜员告知需要取钱,柜员收到卡片后进行查询余额,检查数据后,反回来对我们说,请输入密码。我们输完密码后,柜员才完成最终的取钱流程.
在上面的例子中。请输入密码这一个操作,实际上就是回调。我们触发了取钱的事件,这个事件在执行期间回调我们执行输入密码操作后。继续执行取钱事件。
回调的机制使得程序更加的灵活。能够在一个程序中,不同的情况下执行不同的机制。
例如上面的取钱例子。不同的人来取钱就可以输入不同的密码。
回调的用途核心就是对于需要额外执行一些操作的事件进行扩展。
实际上就是对于一个事件上环节上进行额外的补充。
我们写一个简单的案例:张三正在吃饭,张三女朋友给他打电话过来,问他在干嘛,他说在吃饭。然后他女朋友说,那你吃完饭给我回电话过来。
我们定义一个回调的接口。
public interface Callback{
public void doEvent();
}
接下来创建一个女朋友类,有一个事件给男朋友打电话
public class Girlfriend implements Callback{
public void boyfriend(){
System.out.println("女朋友打电话给张三...");
System.out.println("张三在吃饭一会回过来...");
}
public void doEvent(){
System.out.println("男朋友回电话啦~~");
}
}
接下来我们创建一个张三类,张三因为有女朋友,所以给他注册一个女朋友
public class Zhangsan{
//张三的女朋友
public Callback girlfriend;
public Zhangsan(CallBack girlfriend)
{
this.girlfriend=girlfriend;
//开始吃饭
this.eat();
//女朋友打电话来了
girlfriend.boyfriend();
}
public void eat()
{
System.out.println("张三吃饭中....");
}
public void end(){
System.out.println("吃完饭了....");
girlfriend.doEvent();
}
}
最后我们来测试一下这个流程
public class TestMain
{
public static void main(String[] args)
{
//创建张三 并传入girlfriend
Zhangsan zhangsan=new Zhangsan(new Girlfriend());
//启动控制器对象运行
zhangsan.end();
}
}
打印的结果为:
张三吃饭中....
女朋友打电话给张三...
张三在吃饭一会回过来...
吃完饭了....
男朋友回电话啦~~
整体的回调机制就是,女朋友触发了一个事件(打电话给张三),张三正在做着某事,等做完了事情后及时回调给女朋友。
回调的机制可以让程序更加的灵活,更加的有扩展性。根据业务的不同情况来调用不同的程序方案。从而将更复杂的逻辑进行简单分化。
回调也可以在不同的节点进行异步的任务执行,例如在订单下单完成节点,直接触发库存减少回调事件。
文章 简单的介绍了回调的原理机制,上方在张三的初始化入参一个回调事件。可以完好的理解为在不同的场景下对应不同的应对逻辑。比如张三入参是女朋友小花,李四入参则可以是女朋友小美。
整个回调的机制让程序更加可扩展。更加的灵活。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。