1多例模式类 该种模式本人少见 而且好像是第一次
import java.util.ArrayList;
import java.util.Random;
public class ManySimpl {
private static int maxNumOfEmperor = 2; //最多只能有连个皇帝
private static int countNumOfEmperor = 0;//正在被人尊称的是那个皇帝
private static ArrayList<ManySimpl> hd = new ArrayList<>(maxNumOfEmperor);//装皇帝的列表;
private static ArrayList<String> hdn = new ArrayList<>(maxNumOfEmperor); //皇帝叫什么名字
//就这么多皇帝了,不允许再推举一个皇帝(new 一个皇帝)
private ManySimpl() {
//世俗和道德约束你,目的就是不让你产生第二个皇帝
}
private ManySimpl(String name) {
hdn.add(name);
}
//先把2个皇帝产生出来
static {
//把所有的皇帝都产生出来
for (int i = 0; i < maxNumOfEmperor; i++) {
hd.add(new ManySimpl("皇" + (i + 1) + "帝"));
}
}
public static ManySimpl getInstance() {//这里可以指定参数 返回固定的皇帝对象
Random r = new Random();
countNumOfEmperor = r.nextInt(maxNumOfEmperor);//随机拉出一个皇帝,只要是个精神领袖就成
return hd.get(countNumOfEmperor);
}
//皇帝叫什么名字呀
public static void emperorInfo() {
System.out.println(hdn.get(countNumOfEmperor));
}
import java.util.ArrayList;
import java.util.Random;
public class ManySimpl {
private static int maxNumOfEmperor = 2; //最多只能有连个皇帝
private static int countNumOfEmperor = 0;//正在被人尊称的是那个皇帝
private static ArrayList<ManySimpl> hd = new ArrayList<>(maxNumOfEmperor);//装皇帝的列表;
private static ArrayList<String> hdn = new ArrayList<>(maxNumOfEmperor); //皇帝叫什么名字
//就这么多皇帝了,不允许再推举一个皇帝(new 一个皇帝)
private ManySimpl() {
//世俗和道德约束你,目的就是不让你产生第二个皇帝
}
private ManySimpl(String name) {
hdn.add(name);
}
//先把2个皇帝产生出来
static {
//把所有的皇帝都产生出来
for (int i = 0; i < maxNumOfEmperor; i++) {
hd.add(new ManySimpl("皇" + (i + 1) + "帝"));
}
}
public static ManySimpl getInstance() {//这里可以指定参数 返回固定的皇帝对象
Random r = new Random();
countNumOfEmperor = r.nextInt(maxNumOfEmperor);//随机拉出一个皇帝,只要是个精神领袖就成
return hd.get(countNumOfEmperor);
}
//皇帝叫什么名字呀
public static void emperorInfo() {
System.out.println(hdn.get(countNumOfEmperor));
}
}
2主方法测试类
public class TestMain {
public static void main(String[] args) {
// TODO Auto-generated method stub
for (int i = 0; i < 10; i++) {
//其中getInstance();可以增加参数 指定固定的皇帝
ManySimpl.getInstance().emperorInfo();
}
}
}