动态 if-then 代码

Dynamic if-then Code

我正在使用决策树算法,我得到了 if-then 规则(以文本形式返回),例如:

if(Parameter1 > 10) then
   if(Parameter2< 5) then do A
   else do B
else do C

我想使用这些规则来决定几个项目:item(Parameter1, Parameter2) 示例:item1(15, 5), item2(10, 20), ... 问题是,if-then 规则是动态的,我想编写能够读取此规则并将其应用于项目的代码。

您可以反过来使用 Predicates 来实现您的测试。例如,

public class GreaterThan implements Predicate<Integer> {
    private final int point;

    public GreaterThan(final int point) {
        this.point = point;
    }

    public boolean test(final Integer incoming) {
        return incoming > point;
    }
}

public class LessThan implements Predicate<Integer> {
  private final int point;

  public LessThan(final int point) {
      this.point = point;
  }

  public boolean test(final Integer incoming) {
    return incoming < point;
  }
}

等等。然后您可以使用它来动态构建逻辑检查,因为您的测试现在可以正常运行了。

Predicate<Integer> gt10 = new GreaterThan(10);
Predicate<Integer> lt5 = new LessThan(5);

if(gt10.test(Parameter1)) then
    if(lt5.test(Parameter2)) then do A
    else do B
else do C

将 A、B 和 C 的执行包装在函数中,您就可以实现灵活的系统。现在你正在处理功能对象,你可以动态地构建事物——而不是上面显示的固定测试,你可以根据需要编写测试和结果。