卻發現沒辦法把function當作參數傳給另一個function當CallBack用
因為在Java內並沒有function pointer,所以就有點麻煩
這時候可以用類似Observer的方式來做
簡單來說就是,既然無法丟一個function進去
那你可以把要執行的function放到一個物件內
把物件當參數丟進去就可以了
作法
一.建立公用的Observer Interface
利用Interface將允許使用的method定義出來
例
public interface IObserver{
    public abstract void success(Object data);
    public abstrcat void fail(String msg);
    public abstract void exception(String msg)
}
二.建立要使用的observer Class
把要做的工作在這這Class內實做出來
當然你也可以把這Class建立主(main)程式內,
這樣可以更方便
例
public class MyObserver implements IObserver{
    @override
    public abstract void success(Object data){
        ...
    };
    @override
    public abstrcat void fail(String msg){
        ...
    };
    @override
    public abstract void exception(String msg){
        ...
    }    
}
三.主程式應用
public class myApp{
    ....
    public void run(int status,IObserver observer){
        .....
        if(status==1){
            observer.success(data)
        }else if(status==2){
            observer.fail()
        }else{
            observer.exception("exception");
        }
    };
}
沒有留言:
張貼留言