Binaryton - 一个对象的两个实例

时间:2013-11-09 07:38:28

标签: design-patterns

在设计模式中,我们有Singleton,它确保只有一个类的实例。

我喜欢设计模式,所以我想知道,如果我们只想要那个类的两个实例呢?所以忽略了这个可能有或没有的现实应用;你如何确保一个类只有两个实例?

我自己有一个想法如何做到这一点,但我很好奇其他人提出了什么,我不想偏见任何人。

解释你的答案。显示代码也很受欢迎。

问题再次出现:您如何确保一个班级只有两个实例?

编辑:这只是为了好玩,没有必要,这个虚假模式的真实世界应用程序。我只想看看我们可以作为一个小组提出什么方法。

1 个答案:

答案 0 :(得分:1)

要获得答案,我们可以参考Effective Java(第2版)第3项:“使用私有构造函数或枚举类型强制执行单例属性”

这两种方法都支持任何固定数量的实例,尽管enum似乎非常适合。例如:

public class SimpleLoadBalancer {
    private static final Random RANDOM = new Random();

    public Connection getConnection() {
        return RANDOM.nextBoolean() ?
                BinaryConnection.CONNECTION_ONE:
                BinaryConnection.CONNECTION_TWO;
    }

    public interface Connection {
        void connect();
    }

    private enum BinaryConnection implements Connection {
        CONNECTION_ONE("connection_string_one"),
        CONNECTION_TWO("connection_string_two");

        private final String connectionString;
        private BinaryConnection(String con) {
            connectionString = con;
        }

        @Override
        public void connect() {
            // some connection logic here
        }
    }
}