在设计模式中,我们有 Singleton,它确保一个类只有一个实例。
我喜欢设计模式,所以我想知道,如果我们只想要该类的两个实例怎么办?所以忽略这可能有也可能没有的现实世界的应用程序;你如何确保一个类只有两个实例?
我自己有一个想法,但我很好奇其他人的想法,我不想偏袒任何人。
解释你的答案。也欢迎显示代码。
问题又是:你如何确保一个类只有两个实例?
编辑:这只是为了好玩,这种假模式不一定存在真实世界的应用程序。我只是想看看我们作为一个团队能想出什么方法。
在设计模式中,我们有 Singleton,它确保一个类只有一个实例。
我喜欢设计模式,所以我想知道,如果我们只想要该类的两个实例怎么办?所以忽略这可能有也可能没有的现实世界的应用程序;你如何确保一个类只有两个实例?
我自己有一个想法,但我很好奇其他人的想法,我不想偏袒任何人。
解释你的答案。也欢迎显示代码。
问题又是:你如何确保一个类只有两个实例?
编辑:这只是为了好玩,这种假模式不一定存在真实世界的应用程序。我只是想看看我们作为一个团队能想出什么方法。
答案可以参考 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
}
}
}