Callback Function 也是 Java 中非常重要的觀念, 其實其觀念建立在 IoC 之上,
透過 interface 達成回調的功能, 目前 Android 也大量使用這種技巧, 如 OnClickListener ...etc...在這邊建議先弄懂 IoC 觀念及 interface 使用方法再來看此篇文章會比較適合
因為 Callback 比純 IoC 還要更抽象, 除非自己已經有在包 jar 的需求以及煩惱如何在 jar 中回傳參數給調用 jar 的人知道,
若沒有這種需求則很難憑空去想像 Callback
此次一樣透過例子引導學習, 希望可以幫助大家
在這邊以上課作為例子, 課堂上會有老師、學生, 而學生會發問、老師必須監看是否有學生舉手發問
- 學生擁有發問權
- 老師必須隨時監看是否有學生發問, 及實作有學生發問後的行為
建立發問的介面
public interface QuestionListener {
// 有人發問
void putQuestion();
}
身為學生
public class Student {身為老師
QuestionListener questionListener; // 身為學身可以註冊發問權
public void hands() {
// 當學生舉手時就透過 questionListener 發問
questionListener.putQuestion();
}
public void setQuestionListener(QuestionListener questionListener) {
this.questionListener = questionListener;
}
}
// 身為老師必須實作接收到問題時的行為
public class Teacher implements QuestionListener {
public static void main(String[] args) {
// 有位老師
Teacher teacher = new Teacher();
// 這位老師正在上課
teacher.onClass();
}
public void onClass() {
Student a = new Student();
a.setQuestionListener(this);
// 有位學生 a 在課堂上舉手
a.hands();
}
// 這就是一種 Callback Function
@Override
public void putQuestion() {
System.out.println("oh~ has question");
}
}
不知道以上的敘述是否有讓你們理解 CallBack 呢?
在還沒遇到自己實作之前應該是沒感覺的, 當你們遇到再回來看就會有 FU 囉, 期待你們再次回來。
沒有留言:
張貼留言