gpt4 book ai didi

java - 我们什么时候应该在 Java 中使用 Singleton 类?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:49:37 24 4
gpt4 key购买 nike

按照我的想法,当我们在整个应用程序中共享相同的对象状态时,我们应该创建一个单例类。在那种情况下,我们希望用户限制每次都创建一个新实例,这样他们就无法维护多个状态。同意。但是可以通过将实例变量声明为静态来实现相同的行为。在我看来,无论是 cacheobjectcontainerlogger 还是 Classloader 类,它都将起到相同的作用。

请帮助我理解上面的概念,其中静态实例变量不能解决目的并且需要将类声明为 Singleton?

编辑部分

好吧,让我更清楚一点。单例类的目的是跨jvm只保留单例类的一个实例。同意。但我想想想为什么我们只想保留一个实例。 可能有两个原因:

1) 对象的创建成本可能很高。所以我们只想保留一个实例。同意在这种情况下将实例变量声明为静态并不能解决任何问题。

2) 我们希望跨应用程序共享相同的对象状态。我在想这是将类(class)声明为单例的主要目的。但这可以简单地通过将实例变量声明为静态来实现。

但看起来 1 是将任何类声明为静态的主要原因而不是原因 2,因为它也可以通过静态变量实现。

这是正确的吗?

最佳答案

声明实例变量使该引用成为静态对象。这意味着 that 类只有它的一个实例。但它不会阻止其他人执行 new SomeObject(),无论它是否是静态引用。拥有单例类的想法是控制实例。例如,如果您将构造函数设置为 private,则无法执行 new 来创建新实例。因此,您正在控制实例的创建。

关于java - 我们什么时候应该在 Java 中使用 Singleton 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7207861/

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