[答疑]是不是直接写“发红包”而不是“请求微信发红包”

2022-10-31 16:57:27 浏览数 (1)

DDD领域驱动设计批评文集>>

《软件方法》强化自测题集>>

《软件方法》各章合集>>

jeri 2022-6-29 9:54

这里是不是直接写“发红包”而不是“请求微信发红包”?业务序列图时,箭头表示A请求B, 分析序列图是否也有这个意思?

UMLChina潘加宇

道理“A请求B做某事”是一样的,你自己理一理。

控制类 请求 微信接口 请求微信发红包,边界类的责任就是“请求微信发红包”而不是“发红包”,“发红包”是微信系统的责任。

或者说,我们要流血流汗为边界类写的是“请求微信发红包”的代码,而不是“发红包”的代码。

类似于

老板 请求(命令) 会计 请求税务局办理手续,会计的责任只是去“请求税务局办理手续”

序列图消息上的很多“请求”是多余的废话,那是因为对应的“做某事”很多时候不是“请求****”。

以下是本问题的展开:

问题中有疑惑,分析序列图是否有什么区别?上面讲了,“A请求B做某事”这个道理是一样的,但这个“做某事”之所以是“请求****”,确实和分析序列图有关,因为我们把系统分解了,其中有一个边界类,专门负责封装“请求微信发红包”的责任。

下面这个可以:

如果我们不分解目标系统,就变成:

可能有的同学会下意识反应,咦?“请求A系统做某事”哪里去了,是不是跑前面去了,像这样:

如果有这样的反应,那就要警惕了。我经常批评的各种“DDD创新”吃什么拉什么、一一对应、废话连篇刷工作量就是这样的思想导致的。

指向目标系统的消息是该系统为其他系统提供的服务(用例),例如“下单”、“叫车”。目标系统里面怎么分解的,是不是分了几个类,到底有没有一个类专门负责“请求A系统做某事”,这就不知道了。

当然,如果目标系统的价值确实就是给A系统当一层外皮,那么指向它的消息写“请求A系统做某事”就是合适的。

[推荐升级]23套UML EA和StarUML的建模示范视频-全程字幕(2022.6.1更新)

7月7-10晚网课:软件需求设计方法学全程实例剖析

7月21-24晚剔除“伪创新”的领域驱动设计-网络公开课

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

《软件方法》强化自测题集110题

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

如何选择UMLChina服务


0 人点赞