多例設計模式

1. 概述

多例設計模式,限制本對象的實例個數。

特點:構造方法私有化,類內部提供幾個實例化對象,然後通過static方法獲得。

2. 示例程序

 構造方法私有化,外部類就不能再創建該類的實例,這樣才能保證本對象的實例個數。

    private MyDuoLi(String value) {
        this.value = value;
    }

 類內部提供幾個實例化對象:

    private static final MyDuoLi DUO_LI1 = new MyDuoLi("duoLi1");
    private static final MyDuoLi DUO_LI2 = new MyDuoLi("duoLi2");
    private static final MyDuoLi DUO_LI3 = new MyDuoLi("duoLi3");

 通過static方法獲得,static方法,靜態方法,通過類名就可以訪問一個類的靜態方法:

    public static String getInstance(int op) {
        switch (op) {
            case 1 : return DUO_LI1.getValue();
            case 2 : return DUO_LI2.getValue();
            case 3 : return DUO_LI3.getValue();
            default: return null;
        }
    }

完整代碼如下所示: 

public class MyDuoLi {
    private static final MyDuoLi DUO_LI1 = new MyDuoLi("duoLi1");
    private static final MyDuoLi DUO_LI2 = new MyDuoLi("duoLi2");
    private static final MyDuoLi DUO_LI3 = new MyDuoLi("duoLi3");
    private String value;

    public static String getInstance(int op) {
        switch (op) {
            case 1 : return DUO_LI1.getValue();
            case 2 : return DUO_LI2.getValue();
            case 3 : return DUO_LI3.getValue();
            default: return null;
        }
    }

    private MyDuoLi(String value) {
        this.value = value;
    }

    public String getValue() {
        return value;
    }

    public static void main(String args[]) {
        System.out.println(MyDuoLi.getInstance(1));
        System.out.println(MyDuoLi.getInstance(2));
        System.out.println(MyDuoLi.getInstance(3));
    }
}

運行截圖如下所示:

2. 枚舉(enum)實現多例

完整代碼如下所示,枚舉的更多用法:鏈接

public enum MyDuoLiByEnum {
    DUO_LI1,DUO_LI2,DUO_LI3;

    public static void main(String[] args) {
        System.out.println(MyDuoLiByEnum.DUO_LI1);
        System.out.println(MyDuoLiByEnum.DUO_LI2);
        System.out.println(MyDuoLiByEnum.DUO_LI3);
    }
}

運行截圖:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章