是否曾经需要销毁单例实例?

机会 :

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

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

现在,连接已关闭,而DBManager实例仍处于活动状态,但没有用。我是否需要通过例如将其分配为null来销毁它?否则以后可能会错误地引用它。

如果我为该实例分配了null,然后再次调用newInstance方法,是否会得到另一个新的不同实例?

泰德·霍普(Ted Hopp):

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

如果要在无用的情况下销毁它,我建议您在单例类中自动完成此操作,而无需外部帮助。您还应该考虑完全隐藏单例DBManager并改为实现委托模式。这样可以避免客户端保留对过时DBManager实例的引用的问题然后,您可以使委托对象成为常规单例。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Java

是否可以确保每个Classloader的Class类实例为单例?

来自分类Java

getInstance()是否根据单例模式表示单例?

来自分类Java

单例懒惰与渴望的实例化

来自分类Java

单例实例化

来自分类Java

什么时候/为什么我的Java单例实例被销毁?

来自分类Java

Guice渴望/懒惰的单例实例化

来自分类Dev

多线程单例:实例方法是否需要互斥体?

来自分类Dev

Spring ApplicationContext的静态单例实例

来自分类Dev

单例实例化创建多个对象

来自分类Dev

如何重置单例实例?

来自分类Dev

在Scala中,是否可以检查实例是否为单例对象?

来自分类Dev

Dagger 2单例在多个实例中

来自分类Dev

单例类中的实例变量

来自分类Dev

如何找出单例对象的QQmlEngine实例?

来自分类Dev

服务结构是否为每个有状态分区创建单例实例?

来自分类Dev

如何知道类的实例是否来自单例?

来自分类Dev

是否需要在单例类中使用弱引用?

来自分类Dev

Spring Boot确保TaskScheduler的单例实例

来自分类Dev

特定于线程的单例实例

来自分类Dev

在节点中要求单例实例

来自分类Dev

NullReferenceException单例实例

来自分类Dev

如何使用单例实例模拟类

来自分类Dev

在其方法中获取单例实例

来自分类Dev

单例实例OkHttpClient的性能

来自分类Dev

我是否需要在导航控制器子视图中使用GADRequest()的单例?

来自分类Dev

是否可以创建一个维护实例字典的单例工厂类?

来自分类Dev

从 Android 服务内部启动的单例实例是否会作为服务工作?

来自分类Dev

在销毁时从单例管理的容器中删除对象

来自分类Dev

是否可以强制仅通过单例实例化一个类

Related 相关文章

热门标签

归档