是不是直接写“发红包”而不是“请求微信发红包”

jeri 2022-6-29 9:54

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

UMLChina潘加宇

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

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

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

类似于

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

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

以下是本问题的展开:

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

下面这个可以:

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

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

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

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

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


weixinpanjiayu2