这是一个设计问题,我不是在寻找实现。
我将如何“正确”设计一个对象,该对象采用多个不同类型的参数和(与配置分开)测试这些参数的规则,以便输出参数中的值是否通过与它们相关的测试?
我所说的“正确”的意思是,它应该尽可能高效,易于随心所欲地向配置中添加新规则,并且无需编译即可简单地传递更多参数。此外,它不应该(我希望)要求规则配置知道传入的参数的索引(就像我当前的实现那样)并生成精心设计的代码。
谢谢。
接口的一个基本示例如下:
配置:
num_rules: 2
rule0:
parameter_index: 0
comparison_operator: gt
value: 12.3
rule1:
parameter_index: 1
comparison_operator: eq
value: 19
推荐对象:
class RecoObj {
public:
RecoObj(char *configFilename);
bool recommend(float testParameter[]); // Returns true if all tests pass
...
}
这是我目前的配置,有几个问题。它要求所有参数都是浮点数,并且要求规则知道要与之比较的 testParameter 数组中的索引(这意味着配置编写器必须知道程序员如何加载该数组)。感觉好像有更好的设计方案来解决这个问题。