Java回调机制与OOP思想

结合Java的回调机制总结OPP的思想,因为Java是自学的,开始抽象类和接口的概念都能理解,别人用也能懂,但等到自己设计的时候总是很生疏,等到做Android时,不停的回调,回调,回调。。。看看源码,一点点的就有了理解,就此来总结一下,有不对的地方还请多指出评批。

语言是用来交谈的,更统概的说是来描述一件事情的逻辑,OPP的理念则是全面的抽象了事情的逻辑,忽略了机器,环境等,所以OPP大多来设计应用,像C语言沟通硬件的则用来控制硬件对外提供接口。

用大家都提的一个回调案例,打电话。

张三有一个问题,"怎样让我变得更帅?",自己没找到方法,于是张三打电话问赵四,赵四此时在工作,一听,这问题真难,得好好想想,赵四就告诉张三:问题太难,容我多想想,想到了再回电话给你。于是赵四一边在工作一边想办法,张三也不能傻等着,就出去逛街了,等着赵四想到方法call他。赵四千想万想,终于找到了办法,于是回电话告诉张三:“使用江湖快要失传的绝学,还我漂漂拳”。

将上述抽象的概括为:一个人A问另一个人B问题,A首先要有两个属于,一是A要问问题,二是A要有B的号码;B有一个属性,想出问题并回电A,于是A还得留下号码等B想到问题之后回电。

首先张三得留下一个方式让别人告诉他结果,这样才逛街和知道结果两不误,于是

//这是一个接口,用来得到答案
public interface CallBack {
	//answer为答案
	void tellAnswer(String answer);
}
接着定义A类,A类得有B的联系方式,A类能问问题,然后逛街等待结果

public class A implements CallBack {

	private B b;

	// A有B的联系方式
	public A(B b) {
		this.b = b;
	}

	// A有问题需要问
	public void askQuestion(String question) {
		// 新线程问问题,不能耽误逛街
		new Thread(new Runnable() {

			@Override
			public void run() {
				//向B的回答问题方法中传入问题和告知B是谁询问
				b.replyQuestion(question, A.this);
			}
		}).start();
		// 接着就去逛街
		shopping();

	}

	// A要逛街
	public void shopping() {
	}

	@Override
	public void tellAnswer(String answer) {
		// TODO Auto-generated method stub
		System.out.println("B告诉A变帅的方法为:" + answer);
	}

}
定义B类,拥有回答问题的方法,但此方法需要将结果传出来的参数

public class B {

	public String answer;

	// 回答问题,首先要知道问题,然后回传答案
	public void replyQuestion(String question, CallBack callBack) {

		for (int i = 0; i < 100; i++) {
			// 对question进行反复思考
			answer = "还我漂漂拳";
		}
		// 通过callBack,将思考得到的结果传出去
		callBack.tellAnswer(answer);
	}

}
最后在显示这个事件的具体形式

public class Thing {

	public static void main(String[] args) {
		// B的一个实例,赵四
		B zhaosi = new B();
		// A的一个实例,张三
		A zhangsan = new A(zhaosi);
		// 张三问问题
		zhangsan.askQuestion("怎样让我变得更帅?");
	}

}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值