《编程导论(Java)·9.3.1回调·3》回调的实现

本文深入探讨Java中的回调机制,通过好莱坞法则解释如何在上下层模块间传递信息。文章介绍了如何利用Lambda Expressions实现回调,并讨论了回调在程序设计中的角色,包括观察者模式和控制反转的概念。
摘要由CSDN通过智能技术生成

接《9.3.1Java回调 ·1》(概念)和《编程导论(Java)·9.3.1回调·2》什么是好莱坞法则

本文改写《回调·3》,因为Java8引入了Lambda Expressions



★一个回调函数/回调方法(简称回调、callback)是上层模块实现的,将被下层模块(反过来)“执行”的方法。

【回调,或隐式调用Implicit invocation(某些软件架构的作者使用的术语)

例子:上层Client需要更新进度条——显示复制任务完成的进度时,下层模块Server如何将进度数据传递给上层的Client呢?

通常有两种解决方案: ①轮询;②回调或通知。

【书上的图9-12,在一个包中定义了4个类型,按照分层的要求,应该把代码分别放在不同包中——这里修改了书上的相关内容(包括代码)。但是我就不方便截图了。】

在图9-11中,Client定义的方法callback(int),将被Server这个被调用者反过来调用。请注意图中的分层线,通常下层模块Server不知道上层定义的接口也不应该/能够直接调用上层接口。如何解决这个小问题呢?可以在公共模块/下层模块中设计一个抽象类或接口如IXxx,定义回调方法的规范,而Server调用公共模块IXxx的抽象方法callback(int)即可。换言之,Server不能够调用上层模块的方法,那么调用本层的IXxx的方法总是可以的。类型之间的关系如图9-12所示。


【不好画图啊,先这样将就一下】图9-12及下面的例程说明了Java中使用回调的基本结构。它由上层模块Client、TestCallback和下层被调用者Server和公共模块IClient组成。Client的callback(int) 方法被称为回调。而IClient定义的抽象方法callback(int) 被称为回调接口,大多数情况下,回调接口也简称回调。(书上原文:注意:通常公共模块、上层模块和下层模块均有自己的包,这里简单地将它们全部放在同一个包API.event中,仅仅为了方便地查看相关代码。在实践中&#x

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值