JAVA回調函數

摘自網絡:

   回調函數:A調用B,同時傳A給B。B執行完會調用A的方法(回調)
   目的就是:A發起調用B,B處理完一些事情,再回調執行A的一些操作。
   兩者關係:A和B是關聯關係。

=============================== 

 這個類相當於B(B執行完會調用A的方法)。

public class Caller {  

       private MyCallInterface callInterface;  //接收實現接口的對象

       public void setCallFunc(MyCallInterface callInterface) {  

         this.callInterface = callInterface;  

      }      

      public void call() {  //回調函數

       callInterface.printName();  

    }  

  }


----接口

public interface MyCallInterface {  

    public void  printName();  

}  

  

---相當於A類,被B類回調。

public class Client implements MyCallInterface {    

public void printName() {  

   System.out.println("This is the client printName method");  

   }  

-----回調開始  重要

public class Test {  

    public static void main(String[] args) {  

        Caller caller = new Caller();  

        caller.setCallFunc(new Client());  //實現接口的具體對象作爲參數

        caller.call();  //調用參數中的具體方法

    }  

}  

=================補充:JAVA代理模式

首先說明下代理模式的需求:一組類都實現同一個接口,但是其中一些還需要自己的方法,爲了取代手動給他們單獨添加方法的做法,就有了代理;原理就是:把需要添加的方法的類,交給一個新的類,這個類不改變原有的類基礎上,做到添加特有的方法。AOP就是這個原理。代理類其實就是對原有類封裝後再升級。

具體查看:http://www.cnblogs.com/tiantianbyconan/archive/2012/11/20/2779095.html

靜態代理:被代理的類可以直接並且很明確地將告訴(傳遞)代理類自己的具體對象。

動態代理:被代理類不能直接告訴代理類有關自己對象的信息,智能提供部分信息,剩餘的部分需要代理類根據已有信息動態生成被代理類。

-----代理與回調的區別:

 代理,代理類能夠代表被代理的前提下(代理類要實現被代理的接口,作爲我的代理人,起碼得跟我某些重要方面是一個立場吧!)。最終執行我固有方法的類,外貌跟我相似。我是主角。

回調,最終執行我固有方法的類,外貌不強調(你可以不實現我實現的接口)。強調的是,你執行的時候一定要叫上我(一般的回調函數,就做callback,意思就是,喂!該你了!),而作爲我也是要傳遞自己的對象給人家。人家是主角。


----代理與回調的相似:都通過別人來執行自己固有的方法。


代理與回調主要關注的別人怎麼來調你。代理調用自己的方法,方法名跟自己一樣;回調調用自己的方法,方法名沒要求。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章