我过去构建了一些购物车系统,但我总是将它们设计为最终订单发票只是一个已标记为“已购买”的购物车。在购物车中添加/删除/更改商品的所有逻辑也是订单的逻辑。所有数据都存储在数据库中的相同表中。但这似乎不是设计电子商务网站的正确方法。有人可以解释在域模型中将购物车与发票分开的好处吗?
在我看来,这会导致大量重复的代码、数据库中的一组额外的表,并且在系统需要开始容纳更复杂的订单的情况下更难维护(比如为一个项目指定选定的选项可能会或可能不会更改订单的价格/可用性/发货时间)。我假设我只是没有看到光明,因为我看到的每一本书和其他例子似乎都将这两个看似相似的问题分开了——但我找不到任何解释这样做的好处!在我设计的系统中,通常在确认初始订单后进行更改也是如此。之后(但在履行之前)移除、替换或添加项目的情况并不少见。