用于将规则应用于事实的设计模式和算法

时间:2009-02-20 22:22:21

标签: design-patterns rules

我正在努力确定客户对零售环境中定价引擎的要求。我们已将定价引擎定义为根据一组定价规则进行操作,这些定价规则根据购物车中已有的商品为购买商品建立新的价格点。

简单的价格规则可能获得40%折扣。 一个更复杂的规则可能是当你购买2条裤子并花费至少30美元时获得免费衬衫。

应用这些规则的一般行业惯例似乎是客户的最终最优价格,但已经提出可能需要有排名选项以及堆叠选项。

排名将允许一个否则将失败的规则。堆叠将允许多个规则获胜。

我已经回顾了很多关于规则引擎的帖子,我需要帮助确定我是否应该将这些工具中的一个作为我设计的一部分,或者如果不是,哪些设计模式和算法可能适用于设计。

很明显,这可能是一个NP问题,而且每次交易时我将要处理的项目(事实)数量可能超过100+,每次添加新项目时都需要重新定价。

2 个答案:

答案 0 :(得分:5)

Martin Fowler在Rules Engine上有一篇很好的文章以及在哪里使用它们。看看是否有帮助

http://www.martinfowler.com/bliki/RulesEngine.html

答案 1 :(得分:2)

规则引擎非常合适。如果规则引擎可靠,则适合您的架构/应用程序的其余部分,并且需要应用程序的核心功能,然后去实现它。

如果规则引擎只是你应用程序的一小部分,或者甚至更糟:是一些代码,它们与你们其他应用程序的编程语言不同......那么你应该重新考虑。从您的核心应用程序外部的每个应用程序部分(即使数据库在Java应用程序外部)也存在风险。

然后有两种可能性:自己编写一个简单的规则引擎或使用策略或状态模式。