如果十个类继承自基类,并且所有十个子类都需要访问单例,那么如何传递对单例的引用。我看到了几种解决这个问题的方法,其中两种方式是:
调用超类中的静态方法,该方法设置静态对象的引用,然后由子类共享
将单例的引用传递给每个子类作为其构造函数中的参数。每个子类都可以存储对单例对象的引用,或者将其传递给超类构造函数。
但我不知道什么是首选方式,或者我错过了一些明显的东西。提前谢谢。
答案 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();
}