algorithm - 计算运费时处理太多情况的最简单方法是什么?

标签 algorithm

<分区>

我正在构建一个允许卖家设置运费的系统。

卖家可以通过选择以下选项之一来设置 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)的各种类(如 NoShippingFeeStrategyFixedLocalShippingFeeStrategy),每个类都相应地实现 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 )

关于algorithm - 计算运费时处理太多情况的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18492062/

相关文章:

python - 使用 fuzzywuzzy 时如何更有效地比较字符串?

c - C语言中的奇数?铅 'ram or algorithm' !

java - Java代码大O时间复杂度计算工具?

algorithm - 模式匹配检测信号边缘?

接口(interface)/抽象类之间的Java关系

algorithm - 通过后备数组中的索引交换双向链表中的项目

string - 给定一个回文字符串,通过从中再删除一个字符,我们可以通过多少种方式将其转换为非回文字符串?

algorithm - ADT 或混凝土

arrays - 使用哈希表检查数组中是否有重复项

c - Qsort() 不适用于结构