1. 程式人生 > >JAVA 設計模式-回撥模式

JAVA 設計模式-回撥模式

轉載於http://www.2cto.com/kf/201503/385522.html

還可以參考一篇 :

http://blog.csdn.net/cauchyweierstrass/article/details/44593807

感謝

開發Android已有兩年了,說來慚愧,回撥雖然隨處可見,並且網上關於回撥函式和介面回撥的內容很多,可一直沒弄明白,總結不明白的原因如下:

1、java的介面定義以及向上轉型是理解回撥的基礎;

使用介面的核心原因:為了能夠向上轉型為多個基型別。即利用介面的多實現,可向上轉型為多個介面基型別。

2、匿名類。

程式碼隨處可見new SthInterface()註冊介面回撥。

感謝csdn兩篇文章讓我徹底理解回撥函式:

其實我很願意理解網上那個關於打電話需求幫助的回撥函式例子

在此我也寫了一個與此類似的例子:

1、首先定義一個介面(即回撥介面)(幫助介面,可以向張三需求幫助,也可以向李四需求幫助,具體需要什麼幫助,後期繫結自己實現。)

?
1 2 3 public interface HelperInterface { void execute(); }

2、我們可以讓張三幫助我們解決問題(當然找李四或者王五等) ?
1 2 3 4 5 6 7 public class HelperZhangsan
implements HelperInterface{ @Override public void execute() { System.out.println(This is zhangsan_helper.You can also ask lisi_helper!!); } }

3、尋求幫助的類,他必須持有幫助的回撥介面,因為找不到張三,可以找李四,只要回撥介面不變,總可以找到幫助的類。 ?
1 2 3 4 5 6 7 8 9 10 11 public class Ask { private HelperInterface helperInterface;
public void setHelperInterface(HelperInterface helperInterface){  //註冊 this.helperInterface = helperInterface; } public void resultForAsk(){ helperInterface.execute(); } }

4、測試程式碼類 ?
1 2 3 4 5 6 7 public class Test { public static void main(String[] args) { Ask ask = new Ask(); ask.setHelperInterface(new HelperZhangsan()); ask.resultForAsk(); } }

其實很多時候我們更願意如下這種寫法,也即找個匿名介面實現類幫助我們():
?
1 2 3 4 5 6 7 8 9 10 11 12 13 public class Test { public static void main(String[] args) { Ask ask = new Ask(); ask.setHelperInterface(new

相關推薦

JAVA 設計模式-模式

轉載於http://www.2cto.com/kf/201503/385522.html 還可以參考一篇 : http://blog.csdn.net/cauchyweierstrass/article/details/44593807 感謝 開發Android已

Java設計模式-函式和觀察者模式

Android的框架中有非常多的地方使用了回撥的模式,例如Activity的生命週期,按鈕的點選事件等。 下面是回撥的基本模型: public class A { private CallBack callback; //註冊一個事件 public void reg

Java設計模式補充:模式、事件監聽器模式、觀察者模式(轉)

一、回撥函式為什麼首先會講回撥函式呢?因為這個是理解監聽器、觀察者模式的關鍵。什麼是回撥函式所謂的回撥,用於回撥的函式。 回撥函式只是一個功能片段,由使用者按照回撥函式呼叫約定來實現的一個函式。 有這麼一句通俗的定義:就是程式設計師A寫了一段程式(程式a),其中預留有回撥函式

你所不知道的Java設計之享元模式

享元模式(Flyweight Pattern): 運用共享技術有效地支援大量細粒度物件的複用,系統只使用少量物件,而這些物件都很相似,狀態變化很小,可以實現物件的多次複用。由於享元模式要求能夠共享的物件必須是細粒度物件,因此它又稱為輕量級模式,它是一種物件結構型模式。 當系統中存在大量相

模式的經典型和複雜變形簡介

 分析如下:對於回撥模式,我們可以這樣理解:A類中某個物件m的某個方法,呼叫了B類的某個物件的某個方法doB();但是doB()方法的方法體中,再次呼叫了A類中物件的的另一個方法doA();此處有幾個定義: A類:回撥類 doA():回撥方法 A物件m:回撥物件注意:這種經典的回撥模式,要保證回撥物件的唯一,

Spring中模板模式模式(一)

模板模式 public abstract class TemplatePattern { //模板方法 public final void templateMethod(){ method1();

Java設計的單例模式(三種寫法)

最近在一些部落格上面看到的單例模式,無一例外都是餓漢和懶漢,這兩個確實是單例模式,但是各有自己的弊端 先上程式碼吧 //餓漢式 class ClassA{ private static final ClassA instance = new ClassA(); pub

微信企業號,模式開通.net

企業號每個應用有普通模式和回撥模式兩種,普通模式直接開啟網頁,回撥模式可設定應用底部選單項、可增加互動開發、可把客戶端的操作事件傳給企業伺服器,企業伺服器做響應開發。 開通回撥模式,首先需要通過url的回撥驗證,那麼進入應用後臺設定項,設定好url、token、aes加密偏

java設計模型 解析工廠模式、proxy-agent模式、templete模式

復制代碼 nbsp 解析 try java.awt master 函數 form pre 1、Factory Design pattern 工廠設計模式的優點 (1)工廠設計模式提供了接口而不是實現的代碼方法。 (2)工廠模式從客戶端代碼中刪除實際實現類的實例化。

java學習筆記----的實現

java學習筆記(高琪版) oop面向物件 回撥的實現 取自知乎 常溪玲 的解釋: 你到一個商店買東西,剛好你要的東西沒有貨,於是你在店員那裡留下了你的電話,過了幾天店裡有貨了,店員就打了你的電話,然後你接到電話後就到店裡去取了貨。在這個例子裡,你的電話號碼就叫回調函式,你把電

java之非同步

非同步回撥我的理解: 1.使用了委託模式,呼叫方(ServiceA)持有被呼叫方(ServiceB)的引用,然後呼叫被呼叫方(ServiceB)的方法,被呼叫方方法(ServiceB)完成後,呼叫呼叫方(ServiceA)的回撥函式做一些事情 2.非同步回撥多是一些耗時的

java中的CallBack,Thread以及與android的關聯

class A實現介面InA class A中包含一個class B的引用bclass B有一個引數為InA的方法test(InA a) A的物件a呼叫B的方法傳入自己,test(a) ——這一步相當於you call me然後b就可以在test方法中呼叫InA的方法 —

Java和Android機制

回撥介紹 所謂回撥,就是客戶程式Client呼叫服務程式Service中的某個方法A,然後Service又在某個時候反過來呼叫Client中的某個方法B,對於Client來說,這個B便叫做回撥函式。  回撥的如何實現的呢 Java的回撥是通過介面或者內部類來實

java的介面機制詳解

原文地址:http://www.open-open.com/lib/view/open1461482321288.html 序言 最近學習java,接觸到了回撥機制(CallBack)。初識時感覺比較混亂,而且在網上搜索到的相關的講解,要麼一言帶過,要麼說的比較

深入理解Java中的機制(最通俗易懂的機制的部落格)

1. 什麼是回撥? 在我看來,回撥其實是一個相當具有迷惑性的名字,因為它很容易讓人糾結於回撥這個詞語本身的含義,從而忽略了回撥這種機制的本質。要理解Java中的回撥概念,最好的方式不是通過例項,而是從回撥概念的起源說起。   最開始接觸回撥時在C語言中函式指

java中的(callback)機制簡述

在java中,回撥用的十分頻繁;Android開發中,回撥往往出現在相機的預覽、採圖中,這裡我們來簡單地說明一下回調的實現原理; 回撥,顧名思義就是在呼叫之後返回呼叫。java回撥方法簡單的說就是:假設有兩個類class A和class B,在B中呼叫A類的一

夯實Java基礎系列11:深入理解Java中的機制

目錄 模組間的呼叫 多執行緒中的“回撥” Java回撥機制實戰 例項一 : 同步呼叫 例項二:由淺入深 例項三:Tom做題 參考文章

設計一個要注意哪些事情

# 設計一個回撥要注意哪些事情 回撥是我們在設計系統的時候經常會使用到的, A服務呼叫B服務, 但是如果B服務提供的是一個較長時間的、非同步的介面, 那麼我們就會想到使用一個回撥, 讓B服務在非同步處理結束之後, 來呼叫A的一個回撥介面. 但是細品一下, 這一來一回的設計, 需要思考的點遠不是一個回撥介面這

Command設計模式java機制的異同

最大的區別在於命令模式的具體命令中組合了一個接收者物件,而java回撥機制中的介面的實現類中(即匿名內部類)中並沒有組合一個接收者,從而回調方法沒有繼續呼叫接收者的方法。簡而言之,java回撥機制相較command模式少了一層接收者環節。命令模式正是回撥機制的一個面向物件

Java設計模式補充:調模式、事件監聽器模式、觀察者模式(轉)

應該 hand 關閉 lan china 關註 update 使用 event 一、回調函數 為什麽首先會講回調函數呢?因為這個是理解監聽器、觀察者模式的關鍵。 什麽是回調函數 所謂的回調,用於回調的函數。 回調函數只是一個功能片段,由用戶按照回調函數調用約定來實現的