请教一个对象设计的问题

10-10-06 snow0613
先说一下需求,一个订单(SalesOrder)由一些明细项(SalesOrderItem)组成,每个明细项对应一种商品(Commodity),这种商品在不同的时间段有不同的优惠政策(SellingStrategy)。在这里,SellingStrategy主要针对的是商品。但是,在一些重大的节假日,商家为了促销,可能在这些基础上推出一些对整个单据的优惠,如满1000立减100等策略(SellingStrategy)。这些销售策略有些可以共存,有些则是竞争,比方说有一条策略是这样的:X品牌的纸巾在每月一到三号期间打9折;另外一条则是每周六、周日两天,属于生活用品的所有商品全部打8.5折;还有一条规则是,国庆长假期间所有商品消费满100元返现10元。这三条规则既有共存,也有竞争关系。首先,第一条与第二条规则存在竞争关系,即两者只能满足其中一条优惠;其次,第一、第二分别与第三条存在共存关系,即只要购买的商品总额达到100元则返现10元。

那么类似于这样的需求,怎么设计这些对象?

SalesOrder 销售订单

SalesOrderItem 销售订单明细项

Commodity 所销售的商品

SellingStrategy 销售策略

         

1
snow0613
2010-10-06 20:13
人都跑哪儿去了?怎么木有人回复哦~

banq
2010-10-08 09:37
SellingStrategy属于一种规则约束,可以用专门的Specification类结合策略模式来表达,不能简单地放在订单实体模型中,专门建立一个包来管理这些规则,这样,规则变更也基本不需要涉及订单模型的修改。使得变化和不变进行分离包装。

snow0613
2010-10-09 18:33
谢谢BANQ老师的解答!

猜你喜欢