多例模式

Posted by New Boy on March 9, 2018

前言

其实之前也写过单例模式,说起单例模式,通过将构造函数私有化防止被外部类创建,保证一个类只有一个实例。而多例模式也很简明,就是一个类只有有一定上限个实例。

代码实现

public class Multition {
    public static final int COUNT = 10;

    private int index;

    private static List<Multition> multitions = new ArrayList<Multition>(COUNT);

    static {
        for (int i = 0; i < COUNT; i ++) {
            Multition multition = new Multition();
            multition.index = i;
            multitions.add(multition);
        }
    }

    private Multition() {}

    public static Multition getInstance() {
        Random random = new Random();
        int index = random.nextInt(COUNT);
        return getInstance(index);
    }

    public static Multition getInstance(int index) {
        Multition multition = multitions.get(index);
        return multition;
    }

    public int getIndex() {
        return index;
    }
}

通过getInstance获取实例,可以随机获取,也可以根据下标获取。