我想知道实现这一目标的最吸引人的方式是什么。
我有一个黑匣子。我给它 a 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);
}
}