读书人

Java回调机制的兑现方式

发布时间: 2012-11-19 10:18:51 作者: rapoo

Java回调机制的实现方式
Java回调机制的实现方式
http://blog.chinaunix.net/uid-26727976-id-3130486.html
一、回调机制在java中应用非常广泛,下面用一个demo简单的实现回调机制
1.Time.java
package com.test;
public class Time {
??? private OnTimeChange mOnTimeChange;
??? private int time;
/*接口*/
??? public interface OnTimeChange{
??????? public void timChange();
??? }
/*监听事件*/
??? public void setOnTimeChangeListener(OnTimeChange change){
??????? mOnTimeChange=change;
??? }
??? public void setTime(int value){
?????? ? time=value;
??????? mOnTimeChange.timChange();
??? }
}
2.Caller.java
public class Caller extends Activity implements OnTimeChange {
??? @Override
??? protected void onCreate(Bundle savedInstanceState) {
??????? // TODO Auto-generated method stub
??????? super.onCreate(savedInstanceState);
??????? setContentView(R.layout.main);
??????? Time time=new Time();
??????? time.setOnTimeChangeListener(this);//监听事件
??????? time.setTime(1);
/*匿名内部类实现接口*/???
time.setOnTimeChangeListener(new OnTimeChange() {
????????????
??????????? @Override
??????????? public void timChange() {
??????????????? // TODO Auto-generated method stub
??????????????? Log.i("debug", "time has changed");
??????????? }
??????? });
??? }
??? @Override
??? public void timChange() {
??????? // TODO Auto-generated method stub
??????? Log.i("debug", "Time has changed");
??? }
}


二、
public class Test{
?? public static void main(String[] args){
???? FooBar foo=new FooBar();
???? foo.setCallBack(new ICallBack(){
??????? public void postExec(){System.out.println("method executed.");}
???? });
?? }
}


aaaaaa
public interface ICallBack(){
? void postExec();
}


bbbbbb
public class FooBar..{
? private ICallBack callBack;
? public void setCallBack(ICallBack callBack){
??? this.callBack=callBack;
? }
? public void doSth(){
???? ....
???? callBack.postExec();
? }
? ..
}

JAVA的CALLBACK通过接口来实现。??
? 例:??
? 1.class?? A,class?? B??
? 2.class?? A实现接口ICallBack??
? 3.class?? B拥有一个参数为ICallBack接口类型的函数setCallBack(ICallBack?? o)??
? 4.class?? A运行时调用class?? B中setCallBack函数,以自身传入参数??
? 5.class?? B已取得A,就可以随时回调A所实现的ICallBack接口中的方法?? ?


读书人网 >软件架构设计

热点推荐