单一实例客户端应如何使用单一实例



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

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

Singleton tmp = Singleton.getInstance( );

我将不胜感激singleton clients的任何sample examples??

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

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

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

有时这种单例模式是合适的。 也有不合适的时候,使用静态方法的类更有效。 如何判断何时以及何时不使用单例模式? 这是我上周就这个主题发表的一篇博客文章:

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

最新更新