?
回调模式:
?
一般来说分为以下几步:
?
先定义一个接口,之所以只给一个接口,而不给具体实现,是因为我现在也不知道具体怎么实现,
等真正开始运行的时候,另一个码农再来具体的实现这个方法,
至于怎么实现,我这个接口就是标准,另一个码农实现drive方法的时候要按照我这个接口的格式来,方法名,参数列表 返回值 都要照着我这个来
?
class="java" name="code">package com.callback; public interface Car { public void drive(String location); }
?
?
?
然后是核心业务,这里只关注业务流程不关注我这个drive方法如何实现,因为这个时候我也不知道怎么实现
把Car作为一个参数放这个类里 ? 调用drive方法的时候就用car调用
package com.callback; public class Travel { private Car car; public Travel(Car car){ this.car = car; } public void addGas(){ System.out.println("去加油站加油"); } public void stop(){ System.out.println("发动机熄火"); } public void travelToSomewhere(){ addGas(); car.drive("杭州"); stop(); } }
?
?
到了最后正式运行的时候了
这个时候我要调用travelToSomewhere方法,但是要先实例化Travel,实例化的时候要传一个Car对象,传参的时候 另一个码农就把我最初定义的接口给实现了
?
然后?travel.travelToSomewhere(); 就顺利成章了 ?执行的时候就可以放心的去调用用户最后实现的这个dirve方法了
?
?
可以发现 ?我把Car对象作为参数传到Travel去?
然后由Travel反过来调用Car的方法,这就是回调
package com.callback; public class CallbackTest { /** * @param args */ public static void main(String[] args) { Travel travel = new Travel(new Car(){ @Override public void drive(String location) { System.out.println("开车去"+location); }//这个drive方法 }); travel.travelToSomewhere(); } }
?
?
?