设计模式之多例模式Multiton
多例模式
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()); }}