多例模式例子

例子来源于秦小波的《设计模式之禅》

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();
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_42793833/article/details/84027696
今日推荐