多例模式
public class Die {
private static Die die1 = new Die();
private static Die die2 = new Die();
/**
* 私有构造函数保证 外界 无法直接将此类实例化
*/
private Die() {
}
/**
* 工厂方法
* @param i
* @return
*/
public static Die getInstance(int i) {
switch (i) {
case 0:
return die1;
case 1:
return die2;
default:
return null;
}
}
/**
* 掷骰子 返回 1-6 之间的随机数
* @return int
*/
public synchronized int dice() {
System.out.println("-----------------------------");
Date date = new Date();
Random random = new Random(date.getTime());
//random.nextInt()可能返回 负数
int value = Math.abs(random.nextInt())%6 + 1;
return value;
}
}
public class DieTest extends TestCase {
public void testMain(){
Die die1 = Die.getInstance(0);
Die die2 = Die.getInstance(1);
System.out.println(die1.dice());
System.out.println(die2.dice());
}
}