Java之接口与回调

  • 前言

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


       Java中Swing与AWT的事件监听处理模型就是使用接口与回调实现的,后面学习Applet之后会进一步体会接口与回调的好处,这里举一个简单的例子:

package cahpter05;
//MyListener为事件处理接口,其中有specialProcessEvent方法,表示处理事件的方法
interface MyListener
{
	void specialProcessEvent();
}

class Mymoniter
{
	MyListener mylistener;
	//注册监听器方法
	public void regListener(MyListener ml)
	{
		this.mylistener=ml;
	}
	//事件处理方法
	public void generalProcessEvent()
	{
		this.mylistener.specialProcessEvent();
	}
}
//方式A实现MyListener接口
class WayA implements MyListener
{
	public void specialProcessEvent()
	{
		System.out.println("采用A方式处理事件!");
	}
}
//方式B实现MyListener接口
class WayB implements MyListener
{
	public void specialProcessEvent()
	{
		System.out.println("采用B方式处理事件!");
	}
}
public class Sample5_2 
{
	public static void main(String[] args) 
	{
		// TODO Auto-generated method stub
		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方法)处理事件,而eneralProcessEvent方法调用注册到监控器的处理器中的specialProcessEvent方法来对具体事件处理。

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

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

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值