接口回调
我对接口回调的理解就是:回调方类A的一个方法a通过调用类B的一个方法b去调用类A的另一个方法c。其实是一个类去请求另一个类后得到回复再去调用本类的另一个方法,至于同步回调就是方法b中的逻辑执行完再去执行方法c,而异步回调就是b和c一起再执行。下面是一个乘客与司机的同步回调案例:
interface Callback{ //回调方类A的接口
boolean Consider(int money); //思考是否付钱,就是方法c
void PayFor(int money); //付钱,就是方法c
}
class TaxiDriver{ //调用方类B
public int Answer(Callback callback){ //回答多少钱,就是方法b
System.out.println("去那的话要100块");
if(callback.Consider(100) == true){
callback.PayFor(100);
}
return 100;
}
}
class Passenger implements Callback{ //回调方类A
@Override
public boolean Consider(int money) {
boolean result = true;
if(money > 80){
System.out.println(money+"太贵了,您看80行不行?");
result = false;
}
return result;
}
@Override
public void PayFor(int money) {
System.out.println("好的,这是您的"+money);
}
public void TakeTaxi(TaxiDriver td){ //询问多少钱,就是方法a
System.out.println("师傅,去天一多少钱?");
td.Answer(this);
}
}
public class CallBackTest {
@Test
public void test(){
TaxiDriver td = new TaxiDriver();
Passenger passenger = new Passenger();
passenger.TakeTaxi(td);
}
}
运行结果
为什么需要接口:
如果是别的类也需要调用B类的c方法并想要获得返回值该怎么处理?如果还是按照这样来,那么在向c方法传值的时候就要修改类型,并且要修改最后的d方法;为了方便,这里定义一个接口E,借口E里有一个方法d;