gpt4 book ai didi

java - 曾经需要销毁单例实例吗?

转载 作者:搜寻专家 更新时间:2023-10-30 19:56:56 25 4
gpt4 key购买 nike

通过使用单例,只能创建它的一个实例。我们是否需要销毁该实例?

我有一个单独的 DBManager,它管理 JDBC 连接和查询操作。通过调用它的静态 newInstance 方法,我可以获得它的实例,然后进行一些查询。最后,我想关闭数据库连接,我又调用了另一个静态方法close来关闭JDBC连接。

现在连接已经关闭,而 DBManager 的实例仍然存在但没有用。我是否需要通过例如将其分配给 null 来销毁它?否则以后可能会被错误引用。

如果我给那个实例赋值 null,然后再次调用 newInstance 方法,我会得到另一个新的不同实例吗?

最佳答案

我不会纠结于“单例”的语义——您的要求是任何时候最多存在一个 DBManager 实例。一旦该实例变得无用,您可以销毁它以便按需创建一个新实例,或者定义您的 newInstance 方法(我建议将其重命名为 getInstance ) 抛出异常(可能是 IllegalStateException),如果它是在单例变得无用之后调用的。

如果你打算在它变得无用时销毁它,我建议这在单例类中自动完成,无需外部帮助。您还应该考虑完全隐藏单例 DBManager 并改为实现委托(delegate)模式。这将避免客户端保留对陈旧的 DBManager 实例的引用的问题。然后,您可以使委托(delegate)对象成为常规单例。

关于java - 曾经需要销毁单例实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5342357/

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