我正在构建一个允许卖家设置运费的系统。
卖家可以通过选择以下选项之一来设置 1 件商品的运费:
-0$ (no shipping fee)
-a fixed local shipping fee
-a fixed international shipping fee
-a flat local shipping fee
-a flat international shipping fee
-TBCL (to be calculated later)
买家有他/她自己的地址并且每个订单可以购买许多商品(所有商品必须属于 1 个卖家)。 & 不同的商品可能有不同的运费选项。
可能会发生太多组合。例如,澳大利亚的买家从美国的卖家那里购买了许多商品(可能是 0 美元,固定费用或固定费用),
那么处理这种复杂性的最好和最简单的方法是什么?
我相信来自 GOF[1] 的 Strategy 设计模式非常适合这种情况。
您可以使用类似calculateShipping(deliveryAddress)
的方法定义一个ShippingFeeStrategy
接口(interface)。然后,您将实现实现此接口(interface)的各种类(如 NoShippingFeeStrategy
和 FixedLocalShippingFeeStrategy
),每个类都相应地实现 calculateShipping()
方法。
每个项目或卖家(根据您为系统建模的方式)都会有一个关联的 ShippingFeeStrategy
实例,在需要时会请求它进行计算。
可以在 http://www.dofactory.com/javascript-strategy-pattern.aspx 中找到类似的示例, 根据选择的送货方式计算运费。
[1]:Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides - 设计模式:可重用面向对象软件的要素(Addison-Wesley,ISBN:0-201-63361-2 )