回调接口--------------

什么时候会用到接口回调呢:

  A让B去开始下载任务,B下载完成后通知A已经下载完毕,B通知A便是一个回调的过程.

  那么为什么B能调用A的方法呢:

1:定义类A   定义类B  定义回调接口 public interface CallBack{ public void backResult(String resule); }

2:A实现接口,并且new一个对象B,然后把接口传给B(可以通过类B的构造方法接收接口参数 或者在类B定义一个setCallBack的方法来接收) 

3:B.load()开始执行任务

4:  B下载完毕之后,调用callback.backResult("下载完毕");来通知A已经下载完成

5:结束!

 

 

例子:假设你公司的总经理出差前需要你帮他办件事情,这件事情你需要花些时间去做,这时候总经理肯定不能守着你做完再出差吧,于是就他告诉你他的手机号码叫你如果事情办完了你就打电话告诉他一声;这是一个现实生活中常能碰到的例子,我们用呢就用代码的方式来实现一个这个过程,看一下这个过程究竟是怎样的。

  1. public interface CallBack {  
  2.   
  3.     // 回调方法  
  4.     public void backResult(String result);  
  5. }  

  

  1. public class Manager implements CallBack {  
  2.     /** 
  3.      * @param personnel 
  4.      *            传入一个员工类的对象 
  5.      */  
  6.     public Manager(Personnel personnel) {  
  7.   
  8.         // 想让该让员工做什么  
  9.         personnel.doSomething(this, "整理公司文件");  
  10.     }  
  11.   
  12.     /** 
  13.      * @description 当员工做完总经理让他做的事后就通过该方法通知总经理 
  14.      * @param result 
  15.      *            事情结果 
  16.      */  
  17.     public void backResult(String result) {  
  18.         System.out.println("事情" + result);  
  19.     }  
  20. }

  

  1. package com.aige.test;  
  2.   
  3. /** 
  4.  * @description 该类用来模拟员工 
  5.  * @author Aige 
  6.  * @since 2014/11/6 
  7.  */  
  8. public class Personnel {  
  9.     public void doSomething(CallBack callBack, String task) {  
  10.         // 总经理通过doSomething方法告诉员工要做什么  
  11.         System.out.println("总经理要你做" + task);  
  12.   
  13.         String result = "做完了";  
  14.   
  15.         // 当事情做完了我们就通过总经理公布的phoneCall方法通知总经理结果  
  16.         callBack.backResult(result);  
  17.     }  

 

  

  1. public class Main {  
  2.     public static void main(String[] args) {  
  3.         // 首先我们需要一个员工  
  4.         Personnel personnel = new Personnel();  
  5.   
  6.         // 其次把这个员工指派给总经理  
  7.         new Manager(personnel);  
  8.     }  
  9. }
posted @ 2017-02-16 16:41  壮汉请留步  阅读(146)  评论(0)    收藏  举报