查看原文
其他

[答疑]onEnded "回调"的下列三种画法,那种正确呢

潘加宇 UMLChina 2024-03-10
别把洋垃圾当宝贝-评InfoQ中国“敏捷……”文章(一)
[20210429更新]软件方法(下)分析和设计 第8章 连载

北京-高原(47***59)15:22:59
请问序列图中表示 onEnded "回调"的下列三种画法,那种正确呢?
1、

2、
3、 
北京-高原(47***59)15:30:22
我觉得第一种回调画法容易与普通返回消息混淆,在下图这种左右都有消息线的情况感觉比较怪异:

《软件方法》中好像是第2种画法,但有人提出返回线需要有消息名,也就出现上面第3种画法。请指点,谢谢
崔久印(15****59)9:51:41
不知你图中"回调"的具体含义, 按一般理解, 个人认为将图一中onEnded虚线改为实线应该可以。
smile(8706***1)12:03:27
网上看到的一个关于回调的说法,基本上有三点

smile(8706***1)12:04:32
1. request那个函数调用的时候用那种只有两条线的箭头,而不是实心箭头
2. 回调的时候用实线
3. 回调的时候线上标示的函数应该是sender的函数,而不是receiver的函数
北京-高原(47***59)14:11:53
谢谢 @smile 的解答,也就是"回调"也是主动调用
潘加宇(3504847)15:42:21
两条异步(箭头不是实心的)的消息,而且最好不是水平的
潘加宇(3504847)15:45:31
@smile(8706***1) 12:04:32 对的

北京-高原(47***59)15:46:09
"是两条异步的消息",但我画的这些消息都是同步消息啊,不是多线程之类的?我本准备按@smile 的解答画,即将第一种画法的虚线改为实线的
潘加宇(3504847)15:47:48
你看下那个解答的箭头

北京-高原(47***59)15:49:19
@smile 的图是多线程的。我的不是多线程,是不是就只需要仅仅把返回改为向左的普通同步调用(实线)?
smile(8706***1)16:38:25
dosomething那条线的箭头应该改成不是实心的箭头,然后onEnded的线改成实线。另外假如onEnded是A的方法的话就是对的,如果是C的方法的话,应该改成A类中对应的回调方法吧
北京-高原(47***59)16:50:10
我画的图的本意是:1、在A中创建B对象 b = B.createB(),其中B类实现了一个含有onEnded方法的接口 ;2、A调用C的doSomething方法,将b接口对象传入;3、C在doSomething中先自身处理do(),然后调用B的回调函数onEnded()。
北京-高原(47***59)16:58:39
@smile 所以dosomething那条线要改为不是实心的箭头,我还没有领会,请问是要表达异步消息吗?
onEnded是B的,通过接口注入的方式让C可以调用,我理解为"回调",所以onEnded的线改成实线。
北京-高原(47***59)17:07:18
重新画了下图,我觉得(1)doSomething是同步消息就用实心箭头,(2)onEnded回调用实线。请指点看现在是否有问题

[2020.01加一套题]UMLChina建模竞赛题大全-题目全文+分卷自测(11套110题)


全程字幕-25套UML+Enterprise Architect/StarUML建模示范视频

5月20-23晚学员真实案例剖析专项公开课

[幻灯更新]5月27-30晚-剔除“伪创新”和“无领域”的领域驱动设计-网课

[新增:鸵鸟]软件开发团队的脓包:皇帝的新装、口号党、鸵鸟、废话迷

《软件方法》书中自测题-题目全文+分卷自测(1-8章)16套111题

《非程序员》电子杂志下载(39-51期)

《非程序员》电子杂志下载(1-38期)

中文书籍中对《人月神话》的引用(完结,共110本):软件工程通史1930-2019、实用Common Lisp编程……

CTO也糊涂的常用术语:功能模块、业务架构、用户需求……[20210217更新]

UMLChina服务介绍

继续滑动看下一个

[答疑]onEnded "回调"的下列三种画法,那种正确呢

潘加宇 UMLChina
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存