例子来源于秦小波的《设计模式之禅》
1、主类
/**
* @author zhaojianbo
*/
public class Emperor {
private static int maxNumberOfEmperor = 2;
private static ArrayList emperorInfoList = new ArrayList(maxNumberOfEmperor);
private static ArrayList emperorList = new ArrayList(maxNumberOfEmperor);
private static int countNumOfEmperor = 0;
//最先执行
static {
//动态创建指定个数的示例
for (int i = 0; i < maxNumberOfEmperor; i++) {
emperorList.add(new Emperor("皇" + (i + 1) + "帝"));
}
}
//防止类被实例化
private Emperor() {
}
//同上
private Emperor(String info) {
emperorInfoList.add(info);
}
public static Emperor getInstance() {
Random random = new Random();
countNumOfEmperor = random.nextInt(maxNumberOfEmperor);
return (Emperor) emperorList.get(countNumOfEmperor);
}
public void emperorInfo() {
System.out.println(emperorInfoList.get(countNumOfEmperor));
}
}
2、测试类
/**
* @author zhaojianbo
*/
public class Minister {
public static void main(String[] args) {
int ministerNum = 10;
for (int i = 0; i < ministerNum; i++) {
Emperor emperor = Emperor.getInstance();
System.out.println("第" + (i + 1) + "个大臣参拜的是:");
emperor.emperorInfo();
}
}
}