gpt4 book ai didi

java - 单例客户端应该如何使用单例?

转载 作者:行者123 更新时间:2023-11-30 09:16:18 25 4
gpt4 key购买 nike

我不是在寻找什么是单例。有数百个链接。我还没有找到很好的 client of singleton 例子。示例考虑一个 Singleton 类(其内部结构根本不重要)

我想使用这个对象。客户在哪里/如何使用它?它应该在构造函数中使用吗?静态初始化程序?

Singleton tmp = Singleton.getInstance( );

如果有单例客户端示例,我将不胜感激??

最佳答案

单例模式是当您创建一个对象时,该对象被设计为在程序中存在该对象的单个实例。作为客户端,您必须获得指向实例的指针。你只有四个选择:

  1. 在静态变量中保存一个引用并通过“惰性求值”进行初始化,即测试是否为空,然后在空时进行初始化。之后设置值。
  2. 在静态变量中保存引用并在静态初始化时初始化。你确定那个时候单例已经准备好了吗?这是一个问题。
  3. 在局部变量中保存引用,并在每次调用 getInstance() 时进行初始化。
  4. 根本不要使用变量并在方法链中调用。如果一次调用只需要一份引用,这很好。

一般来说,getInstance 应该是非常有效的,应该没有什么理由在您自己的静态中保存引用的副本。从某种意义上说,你的静态是在复制单例类的工作,单例类也必须有一个静态。一个单一的不应该改变,但如果改变了,你会留下一个陈旧的引用。如果您只需要一个调用,选项 4 是可以的,但是当需要多个调用时,这种模式会导致效率低下。因此,出于所有这些原因,我认为您应该使用选项 3 并每次都获取实例。

有时这种单例模式是合适的。也有不合适的时候,有静态方法的类效率更高。你怎么知道什么时候和什么时候不使用单例模式?这是我上周就该主题发表的一篇博文:

http://agiletribe.purplehillsbooks.com/2013/10/08/dont-abuse-singleton-pattern/

关于java - 单例客户端应该如何使用单例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19481031/

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