土木堡之变中被瓦刺俘 虏的皇帝,被俘虏后,他弟弟朱祁钰当上了皇帝,就是明景帝,估计当上皇帝后乐疯了,忘 记把老哥朱祁镇削为上皇了,我Shit,在中国的历史上就这个时期是有2个皇帝,你说这 期间的大臣多郁闷,两个皇帝耶,两个精神依附对象呀。
代码:(这个是限定了多例实例的个数)
/**
* 皇帝
*/
public class Emperor {
/**最多只能有两个皇帝*/
private static int maxNumOfEmperor=2;
/**皇帝叫什么名字,指定List集合的大小*/
private static List<String> emperorInfoList=new ArrayList<>(maxNumOfEmperor);
/**装皇帝的列表,指定List集合的大小*/
private static List<Emperor> emperorList=new ArrayList<>(maxNumOfEmperor);
/**正在被尊称的是那个皇帝*/
private static int countNumOfEmperor=0;
/**
* 就这么多皇帝,不允许再推荐一个皇帝(new 一个皇帝)
*/
private Emperor(){
//世俗和道德约束你,目的就是不让你产生第二个皇帝
}
private Emperor(String info){
emperorInfoList.add(info);
}
public static Emperor getInstance(){
Random r=new Random();
//随机拉出一个皇帝,只要是精神领袖就成
countNumOfEmperor=r.nextInt(maxNumOfEmperor);
return emperorList.get(countNumOfEmperor);
}
/**
* 皇帝叫什么名字
*/
public static void emperorInfo(){
System.out.println(emperorInfoList.get(countNumOfEmperor));
}
/**
* 先把2个皇帝生产出来
*/
static{
//把所有的皇帝都产生出来
for (int i=0;i<maxNumOfEmperor;i++){
emperorList.add(new Emperor("皇帝"+(i+1)));
}
}
}
测试:
public class Demo {
public static void main(String[] args) {
//10个大臣
int ministerNum=10;
for (int i=0;i<ministerNum;i++){
Emperor emperor=Emperor.getInstance();
System.out.println("第"+(i+1)+"个大臣参拜的是:");
emperor.emperorInfo();
}
}
}
结果:
第1个大臣参拜的是:
皇帝2
第2个大臣参拜的是:
皇帝1
第3个大臣参拜的是:
皇帝1
第4个大臣参拜的是:
皇帝2
第5个大臣参拜的是:
皇帝1
第6个大臣参拜的是:
皇帝1
第7个大臣参拜的是:
皇帝2
第8个大臣参拜的是:
皇帝2
第9个大臣参拜的是:
皇帝2
第10个大臣参拜的是:
皇帝2
当然那种直接new一个构造函数也是可以的,但是就没什么意思吧