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

时间:2013-10-20 18:16:01

标签: java design-patterns singleton

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

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

Singleton tmp = Singleton.getInstance( );

我很感激sample examples

的任何singleton clients

1 个答案:

答案 0 :(得分:1)

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

  1. 在静态变量中保存引用,并通过'lazy evaluation'初始化,即test为null,然后在null时初始化。之后设置值。
  2. 在静态变量中保存引用并在静态初始化时初始化。你确定当时准备好的单身人士吗?这是一个问题。
  3. 在本地变量中保持引用,并且每次调用getInstance()初始化。
  4. 根本不使用变量并调用方法链。如果只需要一个呼叫的一个参考,那就没问题了。
  5. 通常,getInstance应该非常高效,并且没有理由在自己的静态中保存引用的副本。从某种意义上说,你的静态是复制单例类的工作,而单例类也必须具有静态。一个单不应该改变,但如果它曾经做过,你将留下陈旧的参考。如果您只需要一个呼叫,则选项4可以,但是当需要多个呼叫时,此模式会导致效率低下。因此,出于所有这些原因,我认为您应该使用选项3并且每次都获取实例。

    有时候这种单身人士模式是合适的。有时候它是不合适的,而使用静态方法的类更有效。如何判断何时何何不使用Singleton模式?这是我上周就这个主题发表的博客文章:

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