1

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

我喜欢设计模式,所以我想知道,如果我们只想要该类的两个实例怎么办?所以忽略这可能有也可能没有的现实世界的应用程序;你如何确保一个类只有两个实例?

我自己有一个想法,但我很好奇其他人的想法,我不想偏袒任何人。

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

问题又是:你如何确保一个类只有两个实例?

编辑:这只是为了好玩,这种假模式不一定存在真实世界的应用程序。我只是想看看我们作为一个团队能想出什么方法。

4

1 回答 1

1

答案可以参考 Effective Java (2nd Edition) Item 3: "Enforce the singleton property with a private constructor or an enum type"

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

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
        }
    }
}
于 2013-11-09T19:49:40.813 回答