java回调函数

先举个列子。一天小明遇到个问题,打电话问小红这个问题怎么解决,小红知道问题后发现自己要想一会才能解决这个问题,于是对小明说你先做别的事吧,等会我想出来了再给你回电话。这里面的好处是当小明请教小红问题时不必要在那等小红解决问题,而是只要把自己的电话号码给小红,等小红解决问题后会自己打电话去告诉小明,小明在这期间可以做自己别的事。呵呵 其实就一般用在异步的场景,比如典型的ajax就有回调函数。接下来看一下回调的实现方式:

package com.djk.design.huidiao;

/**
 * java回调函数
 * @author djk
 *
 */
public class HuiDiaoTest
{
	public static void main(String[] args) 
	{
		XiaoMing xiaoMing =new XiaoMing();
		xiaoMing.callXiaoHong();
		XiaoHong xiaoHong = new XiaoHong();
		xiaoHong.setCassPhoneNumber(xiaoMing);
		xiaoHong.answer();
	}
}
/**
 * 电话号码
 * @author djk
 *
 */

interface CassPhoneNumber
{
	void callBack();
}



class XiaoMing implements CassPhoneNumber
{

	public void callBack() 
	{
		System.out.println("问题解决");
	}
	
	public void callXiaoHong()
	{
		System.out.println("喂小红,我现在有个问题解决不了,你绑我解决吧");
	}
	
}

class XiaoHong 
{
	private CassPhoneNumber cassPhoneNumber;

	public void answer()
	{
		System.out.println("好啊,不过我要想一会,等会我给你回电话");
		try {
			System.out.println("小红想问题");
			Thread.sleep(1000);
		} catch (Exception e) {
			// TODO: handle exception
		}
		System.out.println("小红问题想出来了于是打电话给小明");
		if(null ==cassPhoneNumber )
		{
			System.out.println("完了,电话号码忘记了");
		}else
		{
			cassPhoneNumber.callBack();	
		}
	}
	
	
	public CassPhoneNumber getCassPhoneNumber() {
		return cassPhoneNumber;
	}

	public void setCassPhoneNumber(CassPhoneNumber cassPhoneNumber) {
		this.cassPhoneNumber = cassPhoneNumber;
	}
}


这就是回调的实现,主要就是被回调者要实现一个规定的接口,然后回调者里面有这个接口的一个引用,当问题解决后就调用这个接口所规范的方法。。。。其实java回调与java的观察者设计模式差不多。。。。都是在第二方和第一方约定一个接口,然后第二方实现这个接口,第一方有这个接口的一个引用去调用其方法。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值