经典场景,订单包含订单行。
客户希望能够对整个订单应用折扣,即固定金额或百分比。
实施该方法的最佳方式是什么?
我在考虑在订单对象上存储两个字段:
然后我可以计算总折扣 - 并将折扣作为订单行,每次更改折扣字段或订单行时我都会重新计算。
警告,提示,最佳实践?
答案 0 :(得分:2)
使用类似复合模式的东西。
回扣不应存储在对象本身内,而应作为外部实体应用。考虑为实际变化提供足够的灵活性。
答案 1 :(得分:2)
将折扣逻辑与订单分开可以更灵活。例如,业务规则可能会更改为具有更灵活的折扣策略,例如折扣仅适用于某些订单行,具体取决于是否对这些商品进行促销。这更类似于策略模式(对于您的场景和业务环境而言可能会或可能不会过度杀伤)。
在这种情况下,订单会有一个外键进入折扣表,该表确定了折扣策略和任何相关数据,如百分比或固定金额。
答案 2 :(得分:1)
您是否考虑过向所有订单行添加折扣。如果没有回扣 - 这是零回扣。可以添加任何折扣。
在这种情况下您应该使用的模式取决于您将如何使用折扣。如果订单上的单一回扣 - 策略非常好。
如果折扣可以互相帮助(首次购买折扣,10000客户和折扣卡),你应该看看装饰师,你必须实施与折扣组合一样多的策略。