我正在开发价格计算引擎。我看了一遍,没有什么比我们需要的更合适。但是,我现在正在研究如何实施具体的价格和/或折扣。我不想向我的最终用户介绍基于规则的引擎,因为他们不会得到它。
例如,当您订购ItemX时,价格为30美元。但与ItemY结合使用,ItemX的价格为20美元。或者在订购五件ItemX时,每件只需15美元。
关于从哪里开始的任何想法?怎么拿这个?也许某些(开源)示例应用程序包含这些实践?我可以使用的任何(技术)模式?最好是在C#中。 提前谢谢!
答案 0 :(得分:4)
您可以通过多种方式实现这一目标,但我认为对您最有用的方法是定义一个可用于表达折扣的DSL,以便轻松解释和合理化与商业用户。来自ayende's articles on DSLs in boo之一的示例是:
apply_discount_of 5.percent:
when order.Total > 1000 and customer.IsPreferred
when order.Total > 10000
suggest_registered_to_preferred:
when order.Total > 100 and not customer.IsPreferred
正如您所看到的,您可以看到,这是您可以打印出来并向客户展示的东西,他们会立即了解正在发生的事情。
当然,开发这样的东西既耗时又昂贵,并且充满了时髦的边缘情况。然而,它具有可以进行单元测试,执行和调试的代码的好处。
如果嘘不是你的事,那么也许你可以看看在ironruby,ironpython或F#中定义类似的东西。但是,我建议远离XML来定义这些规则,除非你真的享受痛苦的世界。
然而,这是像Biztalk这样的产品设计用来处理的东西。您评估和发现哪些规则引擎缺乏?
答案 1 :(得分:4)
忙着看着类似的情况,发现Decorator模式是个不错的选择。
http://www.dofactory.com/Patterns/PatternDecorator.aspx
退房:http://www.itarchitect.co.uk/articles/display.asp?id=357
干杯
同时检查我正在寻找实施折扣的策略类型模式: Discount strategy in shopping cart and orders
答案 2 :(得分:3)
我们使用规则引擎进行此类复杂计算。我们的平台是Java,我们使用Drools(我们很满意)。 Drools也可用于.Net。这是一个开源Rules Engines for .NET列表。
答案 3 :(得分:2)
我很遗憾不得不这样说,但是这似乎是你必须应用一些定价规则引擎来实现你的目标。
看起来你必须
一般情况下,可以考虑很多可能的规则/组合,并且您作为开发人员可以实现这些规则/组合并将其隐藏起来,或允许用户创建它们,但有人必须这样做所以
然后,当你不想实现自己的时候,GOOGLE shold提供了一些: