0
点赞
收藏
分享

微信扫一扫

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

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

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

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

jeri 2022-6-29 9:54

[答疑]是不是直接写“发红包”而不是“请求微信发红包”_目标系统

这里是不是直接写“发红包”而不是“请求微信发红包”?业务序列图时,箭头表示A请求B, 分析序列图是否也有这个意思?UMLChina潘加宇道理“A请求B做某事”是一样的,你自己理一理。控制类 请求 微信接口 请求微信发红包,边界类的责任就是“请求微信发红包”而不是“发红包”,“发红包”是微信系统的责任。或者说,我们要流血流汗为边界类写的是“请求微信发红包”的代码,而不是“发红包”的代码。类似于老板 请求(命令) 会计 请求税务局办理手续,会计的责任只是去“请求税务局办理手续”序列图消息上的很多“请求”是多余的废话,那是因为对应的“做某事”很多时候不是“请求****”。以下是本问题的展开:问题中有疑惑,分析序列图是否有什么区别?上面讲了,“A请求B做某事”这个道理是一样的,但这个“做某事”之所以是“请求****”,确实和分析序列图有关,因为我们把系统分解了,其中有一个边界类,专门负责封装“请求微信发红包”的责任。下面这个可以:

[答疑]是不是直接写“发红包”而不是“请求微信发红包”_目标系统_02

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

[答疑]是不是直接写“发红包”而不是“请求微信发红包”_序列图_03

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

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

如果有这样的反应,那就要警惕了。我经常批评的各种“DDD创新”吃什么拉什么、一一对应、废话连篇刷工作量就是这样的思想导致的。指向目标系统的消息是该系统为其他系统提供的服务(用例),例如“下单”、“叫车”。目标系统里面怎么分解的,是不是分了几个类,到底有没有一个类专门负责“请求A系统做某事”,这就不知道了。

[答疑]是不是直接写“发红包”而不是“请求微信发红包”_序列图_05

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

举报

相关推荐

0 条评论