Android 别人那里学习到的回调机制
来源:互联网 发布:windows无法识别u盘 编辑:程序博客网 时间:2024/05/21 07:01
回调在现实生活中最简单的例子就是:假设你公司的总经理出差前需要你帮他办一件事情,这件事情你需要花些时间去做,这时候总经理肯定不能守着你做完再出差把,于是就告诉你他的手机号码叫你但如果事情办完了,你就打电话告诉他一声。这是一个现实生活中的例子。在Android程序和Java程序中也会经常使用到这种回调机制,下边给大家说一下详细的代码:
//Manager 经理类public class Manager{ public Manager(Personal personal){ personal.doSomething(this,"整理文件"); } //当员工做完总经理让他做的事后,就通过该方法通知总经理 public void phoneCall(String result){ System.out.println("事情:"+result); }}
Manager类是哥模拟总经理的类,当该类的对象被造出来后就会通过Personel对象去执行Personnel中的doSomething方法告诉员工做些什么Personal的代码如下:
//personal的代码如下:public class Personal{ public void doSomething(Manager manager, String task){ System.out.println("总经理吩咐的任务:"+task); String result="做完了"; //做完之后我们需要通过总经理公布的poneCall方法通知总计里结果。 manager.phoneCall(result); }}
//总经理通过调用Personal中的doSomething方法告诉员工该做些什么,当员工做完后就通过Manager中的phoneCall方法通知总经理结果。//Main方法的代码如下public class Main{ //首先我们需要一个员工 Personal personal=new Personal(); //其次我们把这个员工指派给总经理 new Manager(personal);}
满足回调的两个基本的条件:
1. Class A 调用Class B的X 方法
2. Class B中X方法执行的过程中调用Class A中的Y方法完成回调。
上边的这个例子非常的好理解,但是问题来了,如果总经理出差前交代了事情给我去搬,不巧,副总经理也要给我件事情去办,更无耻的是.....主管也发任务过来了,都要求说做完就打电话通知他们, 这是我们就要定义更多的类,什么总经理类,经理类,主管类,等非常多的类,但是这些类都要求做完事情就电话通知他们,每一个类都会有一个类似poneCall的方法作为回调方法,这时,我们利用面向对象的思想来看,是不是可以把这个回调方法抽象出来作为i一个独立的抽象类或接口呢。这也就是多态的思想,我们定义一个名为CallBack的接口作为回调接口,在该接口下定义一个名为backResult抽象方法作物回调方法。让总经理和经理都去实现这个接口。这样才能真正的体现回调,多态,接口的定义。
下面来改正一下代码:
//回调接口public interface CallBack{ //回调方法 public void backResult(String result)}
Manager类的改造方法如下:
//Manager类,用来模拟总经理public class Manager implements CallBack{ public Manager(Personal personal){ //想让员工做什么 personnel.doSomething(this, "整理公司文件"); } //当员工做完总经理让他做的事后就通过该方法通知总经理 public void backResult(String result){ System.out.println("事情:"+reslut); }}
Personal 代码改造以后如下:
doSomething方法不再传入一个Manager对象而是一个CallBack接口://该类用来模拟员工public class Personal{ public void doSomething(Callback callBack, String task){ //总经理通过doSomething方法告诉员工要做什么 System.out.println("总经理要你做"+task); String result="做完了"; //当事情做完了我么就通过总经理公布的phoneCall方法通知总经理结果 callBack.backResult(result); }}
这就是所谓的回调的神秘算法之处。我是完全明白了。
- Android 别人那里学习到的回调机制
- 从别人那里转来的关于java中时间日期的转化 大家一起来学习一下
- 从别人那里转的20条格言
- 如何跑从别人那里拷来的项目
- 从同事那里学习到ServicePack/Hotfix部署的一招最佳实践
- 别人总结的android学习资源汇总
- 从别人那里转过来的几篇讲解WSDL WEBSERVICE 的文章,感觉挺好的
- 经济学的网站总结(从别人那里转来的)
- 从别人那里扒下来的一些有用的开发信息
- 2005-1-24 代码审查是从别人那里吸取经验的重要途径
- datagridview合并行!不知道那里错,主要是这一段代码复制别人的!
- Android回调机制学习
- 谁知道C++的 编辑期到那里下
- 从圣殿骑士那里取到的心经
- 从别人那里抄了点东西
- 学习别人的经验
- 学习别人的知识
- 学习别人的摇一摇
- 敏捷软件开发 Agile software Development
- postgreSQL触发器
- 性能优化——布局优化
- HDU 5748 Bellovin(LIS)
- DialogInterface点击事件和View点击事件冲突问题
- Android 别人那里学习到的回调机制
- HDU 4998 Rotate
- Hibernate学习笔记----HQL(2)
- 国内一线互联网公司内部面试题库
- Android自定义View 简单实现多图片选择控件
- js 选项卡举例
- hadoop使用心得总结
- [CityHunter]游戏流程设计及技术要点
- 【CDP-云设计模式】第5章,3.私有分配模式(Private Distribution Pattern)