Design patterns 如何以灵活的方式存储产品的多个价格?
我想建立一个商店,里面的产品有一个小向导,然后通过它来确定价格。在这个例子中,我指的是印刷产品 例如,当你来到商店想要打印一张名片时,你需要决定是要打印黑白还是彩色,是要选择厚纸还是薄纸,是要打印100张、200张、500张还是1000张等等 毕竟会有一个价格,比如说:黑白厚纸,200张=>40张-$ 在现实中,你有更多的选择。因此,正如您所想,有许多价格,其中没有公式 所以我的问题是:我如何处理价格 我的第一个想法:装饰图案 但当我想到这一点时,这不是一个好主意。正如我所说,没有真正的公式,我还必须生成向导(如果要打印贺卡,可能会有所不同)。此外,我希望能够通过管理界面更改价格,或添加产品,或在产品中添加新的“决策”,如“您想要光滑的纸张吗?”或删除一个(并且仍然保持价格不变) 所以现在我考虑为每个产品使用一个树,在其中我可以添加一个级别(一个新的决策)、度假村级别等等 另一个想法是通过决策构建某种关键对象,并在价格表中查找价格。有点像字典,我在字典中添加决策,然后从中生成一个键,在价格表中查找价格Design patterns 如何以灵活的方式存储产品的多个价格?,design-patterns,architecture,e-commerce,wizard,shop,Design Patterns,Architecture,E Commerce,Wizard,Shop,我想建立一个商店,里面的产品有一个小向导,然后通过它来确定价格。在这个例子中,我指的是印刷产品 例如,当你来到商店想要打印一张名片时,你需要决定是要打印黑白还是彩色,是要选择厚纸还是薄纸,是要打印100张、200张、500张还是1000张等等 毕竟会有一个价格,比如说:黑白厚纸,200张=>40张-$ 在现实中,你有更多的选择。因此,正如您所想,有许多价格,其中没有公式 所以我的问题是:我如何处理价格 我的第一个想法:装饰图案 但当我想到这一点时,这不是一个好主意。正如我所说,没有真正的公式,我
所以在原型设计之前,我想知道我是不是瞎了眼,看不到明显的解决方案,或者也许还有另一种更优雅的方式,我不知道?嗯,我的想法相当复杂,但你的愿望也很复杂 您所描述的向导的问题是,在他们做出所有选择后,他们可能希望返回到#2并更改一件事,以查看它如何改变价格-但您构建向导的方式可能会影响以后是否可以做出选择,结果是,您必须为每个产品定制一组相当复杂的代码,而不是将所有内容都很好地存储在数据库中,这样代码就可以完成所有需要的工作,任何产品更改都会进入数据库,而不是代码更改 首先,您需要了解您有定价逻辑,理想情况下,这将与演示分开。换句话说,您应该能够向一位客户演示逐步向导,向另一位客户演示带有复选框选项和字段的单个页面,并让他们使用相同的限制构建相同的内容 尽量避免设计数据库,这样你就不能这样做。换句话说,如果您执行“选择您自己的冒险”样式的向导,您将限制未来的选项(以及客户的灵活性)。原因是,如果我经历了10个步骤,然后改变了第2步,我必须再经历8个步骤-如果你保证我没有重复我已经做过的选择,这可能是好的,但如果我只是改变纸张颜色,我不想再做同样的8个选择。如果你真的这样做了,确保你保持了很多状态,这样他们以前所做的选择在下次通过时会显示为默认值 我会考虑在数据库中增加一个抽象级别。我希望看到一个矩阵,其中包含每个选项以及显示兼容性的产品和流程,而不是通过用户可以选择的树来指定路径 例如,我有三种纸张类型、三种颜色和三种流程:
- 纸
- 轻的
- 正规的
- 卡片
- 颜色
- 红色的
- 蓝色的
- 绿色的
- 过程
- 印刷品
- 折叠
- 束缚
Light Regular Card Red Blue Green Print Fold Bind
Light 0.05 0.05 0.001 0.50
Regular 0.06 0.05 0.07 0.001 0.02 0.80
Card 0.06 0.002 0.90
Print 0.002
Fold
Bind
空格表示不能混合的项目。值得注意的条目:
- 打印和打印组合-双面打印更频繁地磨损/堵塞机器
- 您不能将项目通过折页机多次(折页操作为空)-但您可以列出不同类型的折页及其适用的纸张
- 您不能绑定折叠的项目
- 我没有复制矩阵中的项目(即轻纸打印与轻纸打印相同-取决于你如何处理你的查询,你会希望表示这一点,或者以一种无关紧要的方式形成表)