この目標を達成するための最も魅力的な方法は何だろうと考えていました。
私はブラックボックスを持っています。を与えるとsupported type
、型から離れたランダムな値のベースが返されます。
サポートされているタイプについては、enum
次のように定義しています。
public enum Types
{
INTEGER,
DOUBLE,
BIGINTEGER,
BIGDECIMAL,
STRING,
BOOLEAN,
CHAR
}
最も簡単な方法は、オブジェクトに基づいてオブジェクトを返す静的関数を作成することだと思いましたType
public static Object getRandomValue(Types type)
{
switch(type)
{
case INTEGER:
return randomInt();
case DOUBLE:
return randomDouble();
case BIGINTEGER:
return randomBigInt();
case BIGDECIMAL:
return randomBigDecimal();
case STRING:
return randomString();
case BOOLEAN:
return randomBool();
case CHAR:
return randomChar();
}
}
問題は、このメソッドに基づいてランダムな値を取得するたびに、追加のキャストを行う必要があることです。
私は設計パターンabstract factory
とを調べましたfactory
が、これらのいずれかを実装する利点があるかどうかを判断できません。または、より適切と思われる別のデザイン パターンがある場合。
random
すべてのメソッドが定義されていると仮定します。
クライアントの例を次に示します。
public abstract class MyClass<T>
{
protected T t;
}
public class MyIntClass extends MyClass<Integer>
{
public MyIntClass()
{
t = getRandomValue(Types.Integer);
}
}