したがって、基本的に、特定の値を計算するためのさまざまな科学モデル (アルゴリズム) があります。各アルゴリズムは、モデルを微調整するために異なるパラメーターのセットを持つことができます。これらのパラメータは、ユーザーが変更できる必要があります。(今のところ、単純なプロパティ ファイルになります)。私が使用している言語は Java です。
だから私はこの出版物をフォローしようとしました
http://www.hillside.net/plop/2010/papers/sobajic.pdf
上記の pdf のコード サンプルを次に示します。C# であると仮定します。
abstract class Algorithm
{
public Algorithm()
{ }
protected Parameter[] parameters;
public Parameter[] getParameters()
{ return parameters.copy(); }
public abstract void execute();
}
abstract class Parameter
{
private string name;
public string GetName()
{ return name; }
public Parameter(string name)
{ this.name = name; }
}
class BoolParameter : Parameter
{
private bool Value;
public bool GetValue()
{ return Value; }
public void SetValue(bool value)
{ Value = value; }
public BoolParameter(string name, bool defaultvalue)
: base(name)
{
Value = defaultvalue;
}
}
class IntParameter : Parameter
{
private int min;
private int max;
private int Value;
public int GetValue()
{ return Value; }
public void SetValue(int value)
{
if (value < min)
throw new ArgumentOutOfRange(GetName() + " can’t be less than " + min);
if (value > max)
throw new ArgumentOutOfRange(GetName() + " can’t be greater than " + max);
Value = value;
}
public IntParameter(string name, int min, int max, int defaultvalue) : base(name)
{
this.min = min;
this.max = max;
Value = defaultvalue;
}
}
パラメータ値を設定するにはどうすればよいですか? 具体的なアルゴリズムが 2 つのパラメータの配列またはリストを返すと仮定します。1 つは IntegerParameter で、もう 1 つは StringParameter です。ただし、上記のパターンの Parameter インターフェイスには setValue メソッドがないため、クライアントはどのようにしてパラメーター値を設定し、その型を知ることができますか?