アプリケーションには多くの種類のオブジェクトがあります。すべてが次の状態を持つことができます: UpToDate、OutOfDate、NotComputed。オブジェクトのすべての操作は、オブジェクトの状態が UpTodate の場合にのみ許可されます。オブジェクトの状態が NotComputed または OutOfDate の場合、許可される操作は Compute と ChangeComputationParams だけです。GUI では、許可されている場合にのみ、オブジェクトに対するアクションを表示したいと考えています。そのため、オブジェクトに対する操作を GUI に表示するかどうかを返すオブジェクトごとに、Operation Validatiors オブジェクトがあります。問題は、オブジェクトに新しい操作を追加するたびに、その OperationValidator クラスに移動して、そこに新しい関数を追加する必要があることです。それはより良い方法でなければなりません。例 :
class Object1OperationValidator
{
Object1OperationValidator(Object1& object1)
{
mObject1 = object1;
}
bool CanDoCompute()
{
return true;
}
bool CanDoChangeComputationParams()
{
return true;
}
bool CanDoOperation1()
{
if(mObject1.State() != UpToDate )
return false;
else
return true;
}
.....
bool CanDoOperationN()
{
if(mObject1.State() != UpToDate )
return false;
else
return true;
}
}