软件设计:带有定制产品的购物车
Software design: Shopping Cart with custom products
我正在建立一个电子商务网站,目前,我需要设计购物车。我的要求包括拥有可能有或没有选择(不同种类的面包、额外的奶酪……)的产品(例如汉堡包)。
将产品存储在购物车中的最佳方式是什么?
存储为数组感觉非常灵活,但会使事情变得更困难,例如计算每种类型的产品数量或在 default/custom 中进行分类(2 个汉堡,1 个汉堡加额外的奶酪):
ProductList: [
{
name: "Hamburger",
extras: ""
},
{
name: "Hamburger",
extras: ""
},
{
name: "Hamburger",
extras: "Cheese"
},
]
另一种选择是将它们存储为具有关联数量的对象(我在不同的购物车实现中看到过):
ProductList: [
{
name: "Hamburger",
extras: "",
quantity: 2
},
{
name: "Hamburger",
extras: "Cheese",
quantity: 1
},
]
我不知道是否有我不知道或取决于域本身的标准方法。
非常感谢!
这里有两种广泛的方法。
一个是有“variant products”。这在电子商务解决方案中很常见,其中一件商品有不同的尺寸、颜色等。如果您事先知道选项是什么(例如,没有自定义选项),并且通常与库存单位相关联,则此方法适用- 一家服装店跟踪他们有多少 S/M/L 版本的 T 恤库存。
如果您可以有效地拥有无限数量的选项,或者可以自定义选项,那么它就不太适合。
在您的模型中,那将是
ProductList: [
{
name: "Hamburger",
quantity: 1
},
{
name: "Hamburger with cheese",
quantity: 1
},
]
另一种模式是“Bill of materials”方法,您可以将项目组合在一起以指定订单中的每个项目。如果没有预定义的选项集,或者所有选项都可以自定义,这很适合 - 例如“芝士汉堡,但芝士不要太多”。
在您的模型中,
ProductList: [
{
name: "Hamburger",
base_product: "Hamburger",
quantity: 1
},
{
name: "Hamburger with cheese",
base_product: "Hamburger",
extras:
{
name: "Cheese",
amount: "A little"
},
quantity: 1
},
]
产品变体相对容易使用,但需要您提前设置所有选项。麦当劳非常适合“产品变体”选项 - 您可以有 small/medium/large、single/double 等。“膳食”选项的数量有限。
另一方面,允许无限菜单组合以及特殊要求的点菜餐厅最好使用物料清单方法。
我正在建立一个电子商务网站,目前,我需要设计购物车。我的要求包括拥有可能有或没有选择(不同种类的面包、额外的奶酪……)的产品(例如汉堡包)。 将产品存储在购物车中的最佳方式是什么? 存储为数组感觉非常灵活,但会使事情变得更困难,例如计算每种类型的产品数量或在 default/custom 中进行分类(2 个汉堡,1 个汉堡加额外的奶酪):
ProductList: [
{
name: "Hamburger",
extras: ""
},
{
name: "Hamburger",
extras: ""
},
{
name: "Hamburger",
extras: "Cheese"
},
]
另一种选择是将它们存储为具有关联数量的对象(我在不同的购物车实现中看到过):
ProductList: [
{
name: "Hamburger",
extras: "",
quantity: 2
},
{
name: "Hamburger",
extras: "Cheese",
quantity: 1
},
]
我不知道是否有我不知道或取决于域本身的标准方法。 非常感谢!
这里有两种广泛的方法。
一个是有“variant products”。这在电子商务解决方案中很常见,其中一件商品有不同的尺寸、颜色等。如果您事先知道选项是什么(例如,没有自定义选项),并且通常与库存单位相关联,则此方法适用- 一家服装店跟踪他们有多少 S/M/L 版本的 T 恤库存。 如果您可以有效地拥有无限数量的选项,或者可以自定义选项,那么它就不太适合。
在您的模型中,那将是
ProductList: [
{
name: "Hamburger",
quantity: 1
},
{
name: "Hamburger with cheese",
quantity: 1
},
]
另一种模式是“Bill of materials”方法,您可以将项目组合在一起以指定订单中的每个项目。如果没有预定义的选项集,或者所有选项都可以自定义,这很适合 - 例如“芝士汉堡,但芝士不要太多”。
在您的模型中,
ProductList: [
{
name: "Hamburger",
base_product: "Hamburger",
quantity: 1
},
{
name: "Hamburger with cheese",
base_product: "Hamburger",
extras:
{
name: "Cheese",
amount: "A little"
},
quantity: 1
},
]
产品变体相对容易使用,但需要您提前设置所有选项。麦当劳非常适合“产品变体”选项 - 您可以有 small/medium/large、single/double 等。“膳食”选项的数量有限。
另一方面,允许无限菜单组合以及特殊要求的点菜餐厅最好使用物料清单方法。