Java监听:一个Java睡前故事(Java Listener: A Java Bedtime Story)

Java监听:一个Java睡前故事(Java Listener: A Java Bedtime Story)

 

作者: 杨帆          

 

本文是仿照 .NET Delegates: A C# Bedtime Story 的功能实现的Java版源代码,时间原因,没有给出文字故事 。请参见原文链接。

 

接口定义








事件

独立工作事件

生活事件 (注意此事件有两个子类)

 

 

 

监听器











事件源

 

运行

 

运行结果

 

后记

java版的故事很明显要比c#的代码多,这实际上是由于Java中的很多机制是编程实现而不是类库和语言特性支持的缘故,下图是两种实现的比较。

 

 javac#说明
效率采用多态,相对高采用委托,相对低。应该说,它们都是在运行时获取对哪个对象的哪个方法进行调用,但是采用多态相对于委托效率高一点。
是否支持静态方法调用java采用多态,当然不能把方法声明为static;c#中delegate中的_object可以为null来实现对静态方法的调用
是否类型安全它们都会在编译时对响应函数进行参数检查,类型安全。
开发者易用性两级实体对象:事件源-与事件响应者三级实体对象:事件源-委托-事件响应者由于有delegate的封装,不用编写事件注册/注销之类的代码,c#事件处理易用性相对高;注意,虽然java中采用接口来规范响应函数,但这里却说java中是两级实体对象,是因为在运行时并不存在接口的实例(实际上,接口也不可实例化,呵呵)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值