1. 程式人生 > >設計模式總結(4)

設計模式總結(4)

設計模式總結(4)

多例模式

單例模式限制了只能使用一個例項,有時候為了提高效率需要有限個相同的例項以供使用

public class Emperor {
    /**
     * 可以產生例項個數
     */
    private static int maxNumOfEmperor = 2;
    /**
     * 例項資訊
     */
    private static ArrayList<String> emperorInfoList = new ArrayList<String>(maxNumOfEmperor);
    /**
     * 例項列表
     */
private static ArrayList<Emperor> emperorList = new ArrayList<Emperor>(maxNumOfEmperor); /** * 正在被使用的例項 */ private static int countNumOfEmperor = 0; /** * 生產所有例項 */ static { for (int i = 0; i < maxNumOfEmperor; 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
(maxNumOfEmperor); return (Emperor) emperorList.get(countNumOfEmperor); } /** * 輸出例項資訊 */ public static void emperorInfo() { System.out.println(emperorInfoList.get(countNumOfEmperor)); } }

測試

public class Main {
    public static void main(String[] args) {
        int ministerNum =10;
        for(int i=0;i<ministerNum;i++){
            Emperor emperor = Emperor.getInstance();
            emperor.emperorInfo();
        }
    }
}