java回调模式的讲解_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java回调模式的讲解

java回调模式的讲解

 2013/12/13 19:09:39  wangzheng1989  程序员俱乐部  我要评论(0)
  • 摘要:回调模式:一般来说分为以下几步:声明回调函数的统一接口Car,包含方法callback();在调用类caller内将该接口设置为私有成员privateCarcar;在caller内提供实现A接口的public方法(将外部该接口的实现类通过形参传入caller的XXX);caller的某个方法dosth()中会用到XXX.callback()方法;在caller的实例中,先实现A接口,后调用dosth()方法;先定义一个接口,之所以只给一个接口,而不给具体实现,是因为我现在也不知道具体怎么实现
  • 标签:Java 模式

?

回调模式:

?

一般来说分为以下几步:

  1. 声明回调函数的统一接口Car?,包含方法callback();
  2. 在调用类caller内将该接口设置为私有成员?private Car car;
  3. 在caller内提供实现A接口的public方法(将外部该接口的实现类通过形参传入caller的XXX);
  4. caller的某个方法dosth()中会用到XXX.callback()方法;
  5. 在caller的实例中,先实现A接口,后调用dosth()方法;

?

先定义一个接口,之所以只给一个接口,而不给具体实现,是因为我现在也不知道具体怎么实现,

等真正开始运行的时候,另一个码农再来具体的实现这个方法,

至于怎么实现,我这个接口就是标准,另一个码农实现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();
 
	}

}

?

?

?

发表评论
用户名: 匿名