单例模式扩展

package singelDemo2;

import java.util.ArrayList;
import java.util.Random;

public class Emperor {
    //定义最多能产生的实例数量
    private static int maxNumOfEmperor = 2;
    
    //每个皇帝都有名字,定义一个List用于存储皇帝的名字
    private static ArrayList<String> nameList = new ArrayList<String>();
    
    //定义一个列表,容纳所有的皇帝实例
    private static ArrayList<Emperor> emperorList = new ArrayList<Emperor>();
    
    //当前皇帝序号
    private static int countNumOfEmperor = 0;
    
    //产生所有对象
    static {
        for(int i = 0 ; i < maxNumOfEmperor ; i++) {
            emperorList.add(new Emperor("皇帝"+(i+1)));
        }
    }
    
    //私有化构造函数
    private Emperor() {
        
    }
    private Emperor(String name) {
        nameList.add(name);
    }
    
    public static Emperor getInstance() {
        Random rand = new Random();
        countNumOfEmperor = rand.nextInt(maxNumOfEmperor);
        return emperorList.get(countNumOfEmperor);
    }
    
    public  void say() {
        System.out.println(nameList.get(countNumOfEmperor) + "发话了");
    }
}

 

package singelDemo2;

public class Minister {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int ministerNum = 5;
        for(int i = 0 ; i < ministerNum ; i ++) {
            Emperor emperor = Emperor.getInstance();
            System.out.println("第"+(i+1)+"参拜的是");
            emperor.say();
        }
    }

}

 

posted on 2017-07-18 21:23  sky950506  阅读(65)  评论(0)    收藏  举报

导航