以一个小demo浅谈Java回调机制

作为一个初来乍到的Android学者,平时用到接口回调都不是很熟悉。今天学习理解了下,自己敲了个形象的demo,来加深一下印象。希望对初学者有些帮助。大神的,还请多多评论,指教。说说回调的好处,或者其他的。

/**
 * 测试接口回调的类
 * @author Changel
 *
 */
public class TestInterface {
	public static void main(String[] args) throws Exception {
		// 出现坏人
		BadBoy bb = new BadBoy();
		// 坏人安置炸弹
		Bomb bomb = bb.setBomb();
		// 坏人启动炸弹
		bb.onStarBomb(bomb,12);
		// 就在11秒后
		Thread.sleep(11000);
		// 警察出现
		Police police = new Police();
		// 警察输入密码进行拆除
		police.removeBomp(bomb, 123456);
	}
}

/**
 * @author Changel
 * 这是一个模拟炸弹类
 */
public class Bomb implements BadBoy.StartBomb ,Police.StopBomp{
	int time;
	/* 启动炸弹开始计时 */
	@Override
	public void onStartBomb(final int count) {
		// TODO Auto-generated method stub
		this.time = count;
		// 启动一个线程模拟爆炸倒计时
		new Thread(new Runnable() {
			@Override
			public void run() {
				// TODO Auto-generated method stub
				while (time > 0) {
					try {
						System.out.println("Time:" + time);
						time--;
						Thread.sleep(1000);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
				// 计时结束自动爆炸
				if(time == 0){
					System.out.println("炸弹爆炸!!!!!!!");
				}else // 炸弹被成功拆除
					System.out.println("拆除成功!!!!!!!");
			}
		}).start();
	}
	
	/* 拆除炸弹 */
	@Override
	public void onStopBomp(long password) {
		// TODO Auto-generated method stub
		if(password == 123456)
			time = -1;
	}
}

/**
 * 模拟坏人的类
 * @author changel
 */
public class BadBoy {
	/**
	 * 安置炸弹的方法
	 * @return
	 */
	public Bomb setBomb(){
		return new Bomb();
	}
	
	/**
	 * 启动炸弹
	 * @param startBomb
	 * @param time
	 */
	public void onStarBomb(StartBomb startBomb,int time){
		startBomb.onStartBomb(12);
	}
	
	/**
	 * @author Changel
	 * 定义一个炸弹启动的接口
	 */
	public interface StartBomb{
		void onStartBomb(final int count);
	}
	
}

/**
 * @author changel
 * 模拟警察的类
 */
public class Police {
	/**
	 * 拆除炸弹的方法
	 * @param bomb
	 * @param password
	 */
	public void removeBomp(StopBomp bomb,long password){
		bomb.onStopBomp(password);
	}
	
	/**
	 * @author caicy
	 * 定义一个停止炸弹的接口
	 */
	public interface StopBomp{
		void onStopBomp(long password);
	}
}

有任何问题或者指教,请评论。我会及时回复;谢谢


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值