单例类,私有变量或方法参数。性能

时间:2014-10-22 19:51:09

标签: java performance

我有3个班,A,B和C.

在任何给定时间只有1个A类实例退出,但是将存在数百个B类和C类对象。

A类调用B类方法。 B类调用C类方法。 C类最终会调用A类对象的方法。

在C中提供对A类对象的引用的最佳和最干净的方法是什么?

  1. 将其保存在私有变量中并通过构造函数初始化它?
  2. 在A类中创建一个返回对象本身的静态getInstance()方法?
  3. 或者通过"这个"通过参数从A到B到C?
  4. 任何C对象都会在其生命周期中多次调用A的方法。

3 个答案:

答案 0 :(得分:0)

我建议在A类中创建一个静态getInstance()方法,该方法返回对象本身。

答案 1 :(得分:0)

选项2.让Singleton类私有地使用私有构造函数包含实例,并使用get实例返回实例。这是常用的模式。

选项1使构造函数对其他不需要的方法开放,因为它只应调用一次(如果我正确地读取选项)。选项3会使代码混乱。

答案 2 :(得分:0)

最方便的方式当然是#2。最干净的"可能是#1或#3,视情况而定。

Singleton(#2)模式存在一些问题。这并不意味着你应该不惜一切代价避免它。但你应该意识到其含义。

有关该主题的一些信息,请参阅What is so bad about singletons?