如何将单例引用传递给十个兄弟对象

时间:2011-03-22 02:42:39

标签: java inheritance constructor singleton

如果十个类继承自基类,并且所有十个子类都需要访问单例,那么如何传递对单例的引用。我看到了几种解决这个问题的方法,其中两种方式是:

  1. 调用超类中的静态方法,该方法设置静态对象的引用,然后由子类共享

  2. 将单例的引用传递给每个子类作为其构造函数中的参数。每个子类都可以存储对单例对象的引用,或者将其传递给超类构造函数。

  3. 但我不知道什么是首选方式,或者我错过了一些明显的东西。提前谢谢。

3 个答案:

答案 0 :(得分:6)

为什么不在你的单例类中使用getInstance()方法?你不需要传递它。无论什么时候需要它,都使用静态getInstance()方法。

答案 1 :(得分:2)

选项1可以减少代码中的噪音和重复。

答案 2 :(得分:1)

如何在基类中创建单例实例:

static final MySingleton mySingleton = new MySingleton();
然后,

mySingleton会自动在所有继承的类中使用。

编辑:根据您的评论:

您可以在基类中获取静态引用(如果它不需要传递运行时参数),如下所示:

static final MySingleton mySingleton;
static {
   SomeClass so = new SomeClass(123, "abc");
   mySingleton = so.getMySingleton();
}