假设我需要创建一个由谓词组成的布尔表达式构建器(任何返回true / false的函数)。
我想创建一些类似链的构建器:
$chainA = new Chain(predicateA1());
$chainA->add(AND, predicateX());
$chainB = new Chain(predicateB1());
$chainB->add(AND, predicateX());
$chain = new Chain($chainA);
$chain->add(OR, $chainB);
所以我得到了这样的表达式(A1和X)或(B1和X),这个东西很简单,但是我需要一个功能 - 对结合/析取形式做一些布尔变换,例如:
(A1和X)或(B1和X) - > (A1或B1)和X.
我不知道如何实现这些目标。
php或java中是否有任何模式或库可以解决这个问题?