代码之家  ›  专栏  ›  技术社区  ›  Bill

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

  •  16
  • Bill  · 技术社区  · 17 年前

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

    一个简单的价格规则可能是 买件衬衫打八折 . 一个更复杂的规则可能是 如果你买了两条裤子,花了至少30美元,就可以得到一件免费的衬衫 .

    应用这些规则的一般行业惯例似乎是对客户的最终最佳价格,但已经出现了这样的情况,即可能需要一个排名选项和一个堆叠选项。

    排名将允许一个规则,否则将失去胜利。堆叠将允许多个规则获胜。

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

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

    2 回复  |  直到 17 年前
        1
  •  5
  •   Nitin Bhide    17 年前

    马丁·福勒(Martin Fowler)有一篇关于规则引擎以及在哪里使用它们的精彩文章。看看是否有帮助

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

        2
  •  2
  •   Theo Lenndorff    17 年前

    规则引擎非常合适。如果规则引擎是可靠的,适合您的体系结构/应用程序的其余部分,并且是应用程序的核心功能所需的,那么就使用它。

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

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