ddd之商品销售

10-01-04 huochaihe
    

对于一个在线销售的系统,并不跟踪至每一件商品,也就是说同一种商品都是一样的,系统不会处理某件商品的状态,那么“商品”是不是一个值对象(或“商品描述”)?但商品的价格是会改变的,与值对象的不变性是不是冲突?订单、商品、商品描述、价格、库存数量这些关系怎么处理?

我想这是一个非常普遍的例子,用ddd的时候感觉一些混乱,请大家发表一下高见。

    

1
banq
2010-01-04 17:01

把商品描述 和 商品价格 数量组合成实体,商品描述是值对象。

一般而言,值对象可以从实体中扣出来。很多实体模型字段很多,达到数十个,应该就是没有使用值对象进行分类的原因。

cmzx3444
2010-01-04 17:08

值对象 是不需要持久化的对象吗

huochaihe
2010-01-04 17:23

谢谢banq。

把商品描述 和 商品价格 数量组合成实体,那这个对象叫什么呢?这个实现思路应该没问题,但感觉有点别扭,可能是这个问题的前提导致的,大多数参考的例子都是货物要有标示进行跟踪的,数量是有库存及出入库提供的。但是我这个问题的前提也应当是客观存在的,且较普遍。

期待您更精彩的回答

banq
2010-01-05 09:41

2010年01月04日 17:23 "huochaihe"的内容
把商品描述 和 商品价格 数量组合成实体,那这个对象叫什么呢

这个实体是商品货物实体,至于你对货物要进行跟踪,那么基于商品货物实体还有一个实体,可参考DDD书中Cargo案例,Cargo实际就是对货物跟踪的案例,源码下载:

http://www.jdon.com/jdonframework/download.html

这是货物运输我设计的融合四色原型和DDD模型的UML图,供参考:

当然Cargo这个案例和你有些区别,关注重点不太一样,它关注的是货物运输过程监控,你关心的是货物有库存数量及出入库数量。

所以,单货物跟踪这个领域,核心关注点也有所不同,关注不同就导致建模结果不一样。

[该贴被banq于2010-01-05 09:45修改过]

2Go 1 2 下一页