gpt4 book ai didi

Java 单例设计模式 : Questions

转载 作者:IT老高 更新时间:2023-10-28 13:52:06 29 4
gpt4 key购买 nike

我最近接受了一次采访,他问我单例设计模式是如何实现的,我告诉他使用静态变量和静态方法我们可以实现单例设计模式。

他似乎对答案满意但我想知道

  1. 我们可以有多少种不同的方式实现单例设计模式在 Java 中?
  2. Singleton Object 的范围是什么?它在 JVM 中是如何工作的?我知道我们总是会有一个 Singleton Object 的实例,但是该对象的实际范围是什么,它是在 JVM 中还是如果有多个应用程序正在运行,而不是它的范围是基于 JVM 内的每个上下文,我真的很困惑这个和无法给出满意的解释?
  3. 最后他问是否可以使用带有 Clusters 的 Singleton Object 并解释一下,当我们调用 Bean Factory 来获取对象时,有什么方法可以让 Spring 不实现 Singleton Design Pattern 吗?

任何关于单例的输入都将受到高度赞赏,在处理单例时要记住哪些主要事项?

谢谢。

最佳答案

有几种方法可以在 Java 中实现单例模式:

// private constructor, public static instance
// usage: Blah.INSTANCE.someMethod();
public class Blah {
public static final Blah INSTANCE = new Blah();
private Blah() {
}
// public methods
}

// private constructor, public instance method
// usage: Woo.getInstance().someMethod();
public class Woo {
private static final Woo INSTANCE = new Woo();
private Woo() {
}
public static Woo getInstance() {
return INSTANCE;
}
// public methods
}

// Java5+ single element enumeration (preferred approach)
// usage: Zing.INSTANCE.someMethod();
public enum Zing {
INSTANCE;
// public methods
}

鉴于上述示例,每个类加载器将有一个实例。

关于在集群中使用单例...我不确定“使用”的定义是什么...面试官是否暗示跨集群创建单个实例?我不确定这是否有意义......?

最后,在 spring 中定义一个非单例对象是通过属性 singleton="false"完成的。

关于Java 单例设计模式 : Questions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3428615/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com