编写一个java类,只有它创建了五个实例 [英] Write a java class to have only five instance of it created

查看:119
本文介绍了编写一个java类,只有它创建了五个实例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想写一个可以实例化的Java类,只需要有只有一个实例的单例类就可以了5次。

I want to write a java class that can be instantiated only 5 times just like you have singleton class which have only one instance.

除此之外,实例应该以循环方式挑选。

Apart from this the instances should be picked in round robin basis.

假设我有一个类A.我应该只能创建这个类的5个实例。
说我有InstanceA_1,InstanceA_2,InstanceA_3,InstanceA_4,InstanceA_5。每当我需要使用它们时,都应该以循环方式进行选择。

Suppose I have a class A. I should be only able to create 5 instances of this class. Say I have InstanceA_1, InstanceA_2, InstanceA_3, InstanceA_4, InstanceA_5. Whenever I need to use them they should be picked on round robin basis.

推荐答案

正如枚举版本实现单例,该解决方案还使用枚举实现... quadrupleton?

Just as enum is recommended by Effective Java 2nd Edition to implement singleton, this solution also uses enum to implement... quadrupleton?

import java.util.*;

public enum RoundRobin {
    EENIE, MEENIE, MINY, MO;

    private final static List<RoundRobin> values =
        Collections.unmodifiableList(Arrays.asList(values()));
    // cache it instead of creating new array every time with values()

    private final static int N = values.size();
    private static int counter = -1;

    public static RoundRobin nextInstance() {
        counter = (counter + 1) % N; // % is the remainder operator
        return values.get(counter);
    }

    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            System.out.println(RoundRobin.nextInstance());
        }
        // EENIE, MEENIE, MINY, MO, EENIE, MEENIE, MINY, MO, ...
    }
}

将这个扩展到五元组是不言自明的。

Extending this to quintupleton is self-explanatory.


  • 有效的Java第2版,使用私有构造函数或枚举类型强制执行单例属性

  • Effective Java 2nd Edition, Enforce singleton property with a private constructor or an enum type

从1.5版开始,第三种实现单例的方法。只需使用一个元素创建一个枚举类型。这种方法在功能上等同于公共领域的方法,除了它更简洁,提供免费的序列化机制,并且即使面对复杂的序列化或反射攻击,也提供了对多个实例化的铁保证。虽然这种方法尚未被广泛采用,但单一元素枚举类型是实现单例的最佳方式。


  • Efficient way to implement singleton pattern in Java

这篇关于编写一个java类,只有它创建了五个实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆