【问题标题】:How to pass a singleton reference to ten sibling objects如何将单例引用传递给十个兄弟对象
【发布时间】:2011-03-22 02:42:39
【问题描述】:

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

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

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

但我不知道首选方式是什么,或者我是否遗漏了一些明显的东西。提前致谢。

【问题讨论】:

    标签: java inheritance constructor singleton


    【解决方案1】:

    为什么不在你的单例类中使用 getInstance() 方法?你不需要传递它。每当您需要它时,请使用静态 getInstance() 方法。

    【讨论】:

      【解决方案2】:

      选项 1 可减少代码中的干扰和重复。

      【讨论】:

      • 我也是这么想的,但我一直想知道有没有更聪明的办法
      【解决方案3】:

      像这样在基类中创建单例实例怎么样:

      static final MySingleton mySingleton = new MySingleton();
      

      mySingleton 然后自动在所有继承的类中可用。

      编辑:根据您的评论:

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

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

      【讨论】:

      • 在程序中,单例需要存在于这个特定的对象族之外。不过还是谢谢。
      • 我添加了另一种方法,请参阅编辑部分,这与您的选项#1 几乎相同。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-27
      • 1970-01-01
      • 2021-11-19
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      • 2021-01-30
      相关资源
      最近更新 更多