一种Handle结构

     最近看到了这样一篇博客,感觉写的很好。尤其是它其中叙述的这种基于事件的模型。

     博客地址: http://www.ibm.com/developerworks/cn/java/l-niosvr/#icomments

     我也是照猫画虎的写了个示例程序,不知道对不对我斗胆描述一下这个结构:

     1.定义一个接口,定义需要提供的服务。

     2.定义一个抽象类(或者普通的类)实现上述接口,实现接口的所有服务,实现内容都为空的。

     3.接下来,用户可以根据自己的需要通过继承以上的类来重写接口的服务,实现自己想要的服务。想写多少写多少,想写几个写几个。这个属于用户自定义的Handle。

     4.最后一步,需要一个触发器。触发器内部维护一个List以保持那些用户添加进来的自定义Handle。这个触发器采用单例模式,通过提供addListener方法向List中添加Handle。最后再提供对应于1中接口的所有服务的的触发调用函数,大概像这样:

public void fireService1(){
		for(int i=0;i<listeners.size();i++){
			((MyListener)listeners.get(i)).opService1();
		}
	}

 大功告成,神奇的效果出来了:

                                                当用户自定义了几个Handle后,通过addListener方法注册后,在执行fireServiceX的时候,虽然他是将List中的所有Handle的ServiceX都执行了一遍,但实际上由于Handle重写的服务不同,若Handle1没有重写ServiceX,则会执行其父类的ServiceX,但是其父类的ServiceX是空的,也就什么都不执行了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值