Java销售类场景中的实现选择

时间:2014-08-09 12:28:24

标签: java design-patterns uml

销售应用场景:

此应用程序根据各种策略为客户提供折扣:

例如:

customer total purchase amount is > 10000  -  discount calculation following Rule1

customer is a senior citizen - discount calculation following Rule2

customer is purchasing on Tuesday - discount calculation following Rule3

customer is purchasing on 1st of everymonth- discount calculation following Rule4

customer is purchasing on a  specific day (admin can provide this offer)- discount calculation following RuleX

如果一位老年人在星期二购买的金额超过10000,那么理想情况下他应该这样做 从上述场景中获得最符合条件的折扣。我们可以用什么设计模式来解决这个问题? 这里可以使用策略模式吗? (这里我们需要使用多个基于RULE的计算来决定哪个 一个应该是最适合用户的,但策略支持在运行时选择singleImplementation(diccount计算)

2 个答案:

答案 0 :(得分:0)

你需要一个设计模式吗?就我而言,我只是测试客户对所有报价的资格,并比较通过测试的所有报价的折扣。

有些优惠可能总是比其他优惠更有趣,如果是这样的情况,您可以在其他优惠之前测试它们,以便在客户有资格获得此类优惠时为您节省一些测试。

答案 1 :(得分:0)

根本不需要设计模式。 您需要的是flow图表,其中涵盖了您的所有不同情况。最后,您必须实现这些流程案例。


<强>供参考: 如果您需要针对特定​​抽象类型的不同实现,则可以应用策略模式。举个例子来看一下java.util.List的具体实现,它们被实现为一个策略模式。

您不应该为您的方案使用策略模式的原因是您永远不会在销售应用程序中拥有有限数量的不同实现。不久之后,这将最终成为一个难以维持的战略怪物!