Java 单例中的静态方法

Java 单例中的静态方法,java,singleton,Java,Singleton,假设我有一个Java类,如下所示: public class ClassicSingleton { private static ClassicSingleton instance = null; protected ClassicSingleton() { // Exists only to defeat instantiation. } public static ClassicSingleton getInstance() { if(inst

假设我有一个Java类,如下所示:

public class ClassicSingleton {
   private static ClassicSingleton instance = null;
   protected ClassicSingleton() {
      // Exists only to defeat instantiation.
   }
   public static ClassicSingleton getInstance() {
      if(instance == null) {
         instance = new ClassicSingleton();
      }
      return instance;
   }

   public void initialize(String id, Double num, String data){
       ....
   }

}
如果我将在另一个类中访问ClassicSingleton的“实例”,那么ClassicSingleton的理想方法类型是什么

初始化应该是一个静态函数,这样我就可以在其他类中调用它:

ClassicSingleton mySingleton = ClassicSingleton.getInstance();
mySingleton = ClassicSingleton.initialize("id",0.0,"data");
或者我应该保持初始化状态并调用:

ClassicSingleton mySingleton = ClassicSingleton.getInstance();
mySingleton.initialize("id",0.0,"data");

初始化
应为静态方法。单例的概念是它是该对象的唯一实例。如果一个对象被初始化两次,或者通过该对象的一个实例被初始化,那么它会稍微违背单例模式的目的


就我个人而言,我喜欢在构造函数中调用
initialize
,它本身只被调用一次,以防止任何混淆。

initialize
应该是一个静态方法。单例的概念是它是该对象的唯一实例。如果一个对象被初始化两次,或者通过该对象的一个实例被初始化,那么它会稍微违背单例模式的目的


就我个人而言,我喜欢在构造函数中调用
initialize
,它本身只调用一次,以防止任何混淆。

如果您正在访问实例,则使用第二个选项

ClassicSingleton mySingleton = ClassicSingleton.getInstance();
mySingleton.initialize("id", 0.0, "data");

如果要访问实例,请使用第二个选项

ClassicSingleton mySingleton = ClassicSingleton.getInstance();
mySingleton.initialize("id", 0.0, "data");

如果您正在创建Singleton类的实例,那么您应该选择第二个

如果您正在创建Singleton类的实例,那么您应该选择第二个