4

我正在使用的应用程序需要复杂的参数化和配置才能对自定义零件进行建模。不同参数之间存在各种相互依赖关系,例如设置参数“A”会使“B”和“C”的某些值无效,或者为参数“D”的值添加额外的约束。

目前,这是通过将所有参数存储在查找表中并在其上运行规则来解决的。规则是用 XML 手写的,被加载并转换为用于规则引擎的某种中间格式。每次参数更改时,都会重新运行所有规则。

同时这非常缓慢且容易出错。

我觉得使用基于(DAG)的方法可能是有益的,我们只能对图的子集进行更新。

这是一个好主意吗?你知道更好的方法吗?如果您遇到过类似的问题,您是如何解决的?

编辑:我正在尝试实现一个设计,其中只有参数的依赖子集必须在更改时更新。目前,规则在每次更改时都会在全球范围内重新运行。参数设置为默认值,但可由用户更改。根据参数的值,其他参数的默认值可能不同。

4

1 回答 1

1

这是一个好主意吗?

是的。您可以创建 DAG 并进行 DFS 遍历并找出依赖链。

你知道更好的方法吗?如果您遇到过类似的问题,您是如何解决的?

据我了解,有一个复杂的依赖结构可以由 DAG 建模。如果其中任何一个发生变化,则依赖组件需要更改。编译多年来一直在这样做。您可能想研究他们所做的依赖性分析。

另一种方法可以通过观察者模式建模。在这里,每个对象都公开了一种方法来通知观察者是否有任何变化。依赖对象订阅通知。当发生改变对象状态的事件时,它会调用相关的侦听器。

于 2012-08-12T10:40:02.957 回答