通常假定谓词(用于测试其输入的条件的布尔值函数对象)是无状态的。
对于一个带有state的测试函数的对象,什么是最合适的名字?
。在Java中,下面的CountTrigger
类只在第n次测试与期望值匹配的值时返回true,否则返回false。
interface QuasiPredicate<T> // what should this be renamed to?
{
public boolean test(T value);
}
class CountTrigger<T> implements QuasiPredicate<T>
{
// for simplicity, ignore synchronization + null-value issues
private int remainingTriggers = 0;
final private T testValue;
public CountTrigger(T testValue, int count)
{
this.remainingTriggers = count;
this.testValue = testValue;
}
@Override public boolean test(T value)
{
if (!this.testValue.equals(value))
return false;
if (this.remainingTriggers == 0)
return false;
if (--this.remainingTriggers == 0)
return true;
}
}
考虑到它是一个接口,接口是implemented
而不是extended
,那么我不认为你的对象实现谓词的问题。
如果你打算把public CountTrigger(T testValue, int count)
放在接口中,那么你可能需要一个不同的名称。可能是IFiniteRule或其他合适的同义词。可以在https://english.stackexchange.com/;-)