単一インスタンスの実践

1303 ワード


1、内部クラス
public class Singleton {
      private static class SingletonHolder {
             public static Singleton singleton = new Singleton();
      } 
       public Singleton getResource() {
              return SingletonHolder.singleton;
       }

        private Singleton() {};
}

 
 
2、二重ロック
 
public class Singleton() {
      private static volatile Singleton singleton = null;
      private Singleton() {};

      public static Singleton getSingleton() {
            if( singleton != null ) {
                   Synchronized(Singleton.class) {
                         if( singleton != null ) {
                                singleton = new Singleton();
                         }
                   }
            }
           return singleton;
      }
}

 
 
3、怠惰でないロード
public class Singleton() {
      private static Singleton singleton = new Singleton();
      private Singleton() {};

      public static Singleton getSingleton() {
            return singleton
      }
}

  
4、列挙