`
mmdev
  • 浏览: 12946607 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

design principle:java 回调与委派/委托机制

 
阅读更多

博客好久没有更新,自己也好久没有写代码了。


惭愧!最近诸事不顺,算了,不说废话了,呵呵!


博客design principle:模拟 android Button 控件点击事件主要说了一下模拟 android 的 Listener 模式,其实这就是一种委派与回调机制的体现。


委派,也可以叫做委托,从字面上来理解的话,应该是委托其他类做事情而自己不做或者只做一部分工作;而回调,就是调用自己的方法。


在 java 中,这两种机制很类似,你姑且可以认为它们就是一码事。


推荐一篇博文给大家:Java中委托事件模型


java 中,实现委派和回调都是通过接口来实现的。下面举个小例子吧!


该例子是这样的(只是一个例子):


ProfessionalWorker 、SparetimeWorker 负责发射 Rocket,Rocket 类通过接口 IRocketDelegate 委派(或者说是回调)ProfessionalWorker 、SparetimeWorker自己发射。


总之,Rocket不做具体的事情。看实例代码:


IRocketDelegate.java源码



共有三个方法,分别是用于计算 Rocket 发射时间、计算 Rocket 发射完毕的时间以及发送是否失败的。


Rocket.java源码



在这个类中,声明一个 IRocketDelegate 接口对象,使用该对象调用接口的方法。我们知道,接口不可以直接实例化,换句话说,实例化接口必须实现接口的所有方法。


那么,我们就把这些实现工作交给具体的发射者来完成。实现回调。


ProfessionalWorker.java源码



SparetimeWorker.java源码



这个类采用内部类的方式完成。


Test.java



显示结果




这就体现 Java 中的一句话Don't call me,I'll call you. 其含义就是回调(或者委派/委托)。


android 中很多这样的用法,关于接口的好处还有很多,后续慢慢研究,记住一句话:面向对象面向接口编程。





分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics