Java 对多个类使用单例模式

Java 对多个类使用单例模式,java,android,Java,Android,看了很久,但第一次问问题,所以如果我遗漏了一些“明显的”东西,请对我宽容一些。无论如何,假设我正在开发一个音乐应用程序,我有一个监控音频的线程,但它根据输出到的设备类型(例如aux端口与蓝牙)收集数据的方式不同。假设我们有一个超级类AudioMonitor和两个子类AuxAudioMonitor和BluetoothAudioMonitor。我的目标是在任何给定的时间只有一个监视器,所以我想到了单例模式,但单例模式似乎要求类嵌套在单例中,如果我决定在将来添加更多的类(WiFi?谁知道),这将是非常

看了很久,但第一次问问题,所以如果我遗漏了一些“明显的”东西,请对我宽容一些。无论如何,假设我正在开发一个音乐应用程序,我有一个监控音频的线程,但它根据输出到的设备类型(例如aux端口与蓝牙)收集数据的方式不同。假设我们有一个超级类AudioMonitor和两个子类AuxAudioMonitor和BluetoothAudioMonitor。我的目标是在任何给定的时间只有一个监视器,所以我想到了单例模式,但单例模式似乎要求类嵌套在单例中,如果我决定在将来添加更多的类(WiFi?谁知道),这将是非常疯狂的。所以我很好奇是否有一种方法可以将单例模式用于多个类(而不是多个实例)

AudioMonitor.java

public class AudioMonitor {
  public AudioMonitor() {
    //something
  }

  public void monitor() {
    //something
  }
}
public class AuxAudioMonitor extends AudioMonitor {
  public AuxAudioMonitor() {
    //something
  }

  @Override
  public void monitor() {
    //something
  }
}
public class BluetoothAudioMonitor extends AudioMonitor {
  public BluetoothAudioMonitor() {
    //something
  }

  @Override
  public void monitor() {
    //something
  }
}
AuxAudioMonitor.java

public class AudioMonitor {
  public AudioMonitor() {
    //something
  }

  public void monitor() {
    //something
  }
}
public class AuxAudioMonitor extends AudioMonitor {
  public AuxAudioMonitor() {
    //something
  }

  @Override
  public void monitor() {
    //something
  }
}
public class BluetoothAudioMonitor extends AudioMonitor {
  public BluetoothAudioMonitor() {
    //something
  }

  @Override
  public void monitor() {
    //something
  }
}
BluetoothAudioMonitor.java

public class AudioMonitor {
  public AudioMonitor() {
    //something
  }

  public void monitor() {
    //something
  }
}
public class AuxAudioMonitor extends AudioMonitor {
  public AuxAudioMonitor() {
    //something
  }

  @Override
  public void monitor() {
    //something
  }
}
public class BluetoothAudioMonitor extends AudioMonitor {
  public BluetoothAudioMonitor() {
    //something
  }

  @Override
  public void monitor() {
    //something
  }
}
所以理想情况下,我想要下面这样的东西,一次只存在一个监视器,但监视器的类将基于音频输出。但由于构造函数是公共的,这意味着任何人都可以实例化这些类,下面的单例将是无用的。为简单起见,我知道我并不是在这里处理所有情况(例如,用户在运行时切换音频输出设备)

有什么好办法吗?如有任何意见,我们将不胜感激