在设计模式中,我们有Singleton,它确保只有一个类的实例。
我喜欢设计模式,所以我想知道,如果我们只想要那个类的两个实例呢?所以忽略了这个可能有或没有的现实应用;你如何确保一个类只有两个实例?
我自己有一个想法如何做到这一点,但我很好奇其他人提出了什么,我不想偏见任何人。
解释你的答案。显示代码也很受欢迎。
问题再次出现:您如何确保一个班级只有两个实例?
编辑:这只是为了好玩,没有必要,这个虚假模式的真实世界应用程序。我只想看看我们可以作为一个小组提出什么方法。答案 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
}
}
}