Flutter开发App的未来及其在各行业的应用潜力分析
708
2022-10-13
EA&UML日拱一卒--序列图(Sequence Diagram)::连续
今天是序列图的最后一个话题,连续(continuation)。在UML中是这样定义连续的:
交互中的一个标签,允许将条件拆分成两个片段。而这两个片段在语义上是连在一起的。
这里采用EA帮助系统中的例子,当然版权也属于SparxSystems。首先是主流程。
eatab调用repos:File的reqConn方法,如果请求成功,则调用logConn后执行pathSucc连续标签引导的部分,如果失败,则执行pathFail连续标签引导的部分。两个标签分别引导的处理被设计到了ConnHandler中。
pathSucc标签接下来的处理是向estab返回connListen,而pathFail标签接下来的处理是调用ReCt的trackFail方法跟踪错误。
使用了连续标签以后,使用者可以自由定义成功和失败时的处理。
如果本文就这么结束了,是不是觉得太简单了?
之所以把本文拖到今天才写是因为有一个疑问一直没有解决:如果连续的效果仅限于此的话,完全可以通过保存reqConn的执行结果,然后再利用参数传递给ConnHandler的方式来实现,这样只会更加清晰。
我们忽略了什么呢?
还是用自创的例子来说明吧。这里以某智能摄像头为例。
基本流程如下:
5STimer每次发生Timeout以后会向SmartCamera发出通知,SmartCamera接到通知后拍摄照片,然后把拍摄的照片向云端传送。这里为拍摄成功,拍摄失败,传送成功,传送失败分别准备了连续标签以备其他处理使用。
下面是一种处理方式的例子:
这里只是简单地在拍照失败,云推送失败时向MobilePhone报告错误信息。也可以定义其他的处理,例如云推送失败时本地保存等等。
在本例中,拍照/推送的处理处于无限循环的处理中,永远(基本上)也等不到处理结束的时候。因此也就不存在返回值如何如何了。
总结
连续(continuation)更像条件分支中的回调函数。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~