述語 (条件の入力をテストするブール値関数であるオブジェクト) は、一般にステートレスであると見なされます。
状態を持つテスト機能を持つオブジェクトに最も適切な名前は?
たとえば、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;
}
}