接口与回调

        回调是一种常见的程序设计模式,利用回调技术可以处理这样的问题,事件A发生时要执行处理事件A的代码,判断何时发生事件A及何时执行处理的代码。这些代码是固定,先行编写完毕,供使用。当事件A的处理代码开放给其他开发人员编写,可以有很多不同的实现,使用时可以注册具体需要的实现来处理。

       Java中Swing 与 AWT的事件监听处理模型就是使用接口与回调实现的。下面举一个简单的例子来说明这个问题。

//回调示例
//MyListener为事件处理接口,其中有specialProcessEvent方法,表示处理事件的方法
public interface MyListener{
	void specialProcessEvent();
}
public class MyMoniter{
	MyListener mylistener;
	//注册监听器方法
	public void regListener(MyListener ml){
		this.mylistener = ml;
	}
	//事件处理方法
	public void generalProcessEvent(){
		this.mylistener.specialProcessEvent();
	}
}
//方式A实现MyListener接口
public class WayA implements MyListener{
	public void specialProcessEvent(){
		System.out.println("我采用A方式处理事件!!!");
	}
}
//方式B实现MyListener接口
public class WayB implements MyListener{
	public void specialProcessEvent(){
		System.out.println("我采用B方式处理事件!!!");
	}
}

public class Sample5_3{
	public static void main(String[] args){
		//创建对象
		MyMoniter mm = new MyMoniter();
		WayA wa = new WayA();
		WayB wb = new WayB();
		//注册A处理器
		mm.regListener(wa);
		//发送事件处理请求
		mm.generalProcessEvent();
		
		//注册B处理器
		mm.regListener(wb);
		//发送事件处理请求
		mm.generalProcessEvent();
	}
}


         上面的例子中,MyMoniter 是一个监控者,当有事件发生时,通知监控类(调用其generalProcessEvent方法)处理事件,而generalProcessEvent方法调用注册到监控器的处理器中 specialProcessEvent 方法来对具体事件处理。

       MyMoniter中regListener方法允许把不同的处理器注册给监控者。WayA与WayB是实现了事件处理接口的两个具体的处理器,分别对事件采用不同的处理方法。

       有结果可以看出,由于两次事件处理前注册了不同的处理器实现,故两次事件处理执行具体任务不同。而且如果有需要,可以实现更多不同的处理方式,提供了很高的灵活性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值