领域驱动设计 - 实战

假设我们要设计一个系统,它能实现对一个订单的物流追踪,我们的领域模型应该是什么样的呢?

场景1:一辆车
比如订单是9吨水泥,从仓库A装货,送到仓库B卸货,假设我们用一辆10吨车一次搞定。因此我们可以设计一个车次的领域对象,它的定义是一辆车的一次运输,这个场景下的对象图可以简单表示为:

订单(9吨水泥,A->B) ——> 车次(10吨)

场景2:多辆车分货
假设我们找不到10吨车,只能用2辆5吨车来运,一辆运5吨,一辆运4吨,这时车次还要记录运了多少吨货,对象图如下:

订单(9吨水泥,A->B)
——> 车次(5吨,5吨水泥)
——> 车次(5吨,4吨水泥)

场景3:多辆车分段
假设这是长途运输,我们先用一辆10吨车来提货,然后暂落到一个集货仓库C,然后再用一辆30吨的车把9吨水泥和其它货物放在一起送到集货仓D,最后再用一辆10吨车,把水泥从D送到B,这时车次还要记录起点和终点,对象图如下:

订单(9吨水泥,A->B)
——>车次(10吨,9吨水泥,A->C)
——>车次(30吨,9吨水泥,C->D)
——>车次(10吨,9吨水泥,D->B)

场景4:多点装卸货
假设仓库A的水泥不够,只有5吨,提货车辆还要到A1仓库装4吨,这时车次需要经过多个点,对象图如下:

订单(5吨水泥,4吨水泥,A(5吨)->A1(4吨)->B)
——>车次(10吨,5吨水泥,4吨水泥,A(5吨)->A1(4吨)->C)
——>车次(30吨,5吨水泥,4吨水泥,C->D)
——>车次(10吨,5吨水泥,4吨水泥,D->B)

明天再分析一下多个订单装一辆车的情况。

你可能感兴趣的:(领域驱动设计 - 实战)