javaの単一の例のモードと方法の総括を詳しく説明します。


javaデザインモード--単一例モード
 一例の設計モード
Singletonは、あるクラスがSingletonモードを採用することを意味する作成型のモードであり、このクラスが作成された後に、外部へのアクセスのための一例のみが生成され、グローバルなアクセスポイントが提供される。
核心知識点は以下の通りです。
(1)一例の設計モードを採用する類の構造方法を私有化する(prvate修飾を採用する)。
(2)このクラスの例示的なオブジェクトは、その内部で生成され、prvate staticタイプにカプセル化される。
(3)クラスのインスタンスに戻る静的方法を定義する。

/** 
 *    
 *        :   ,            
 */ 
public class SingletonTest { 

  //            
  private SingletonTest() { 
  } 

  //                ,   Static final   
  private static final SingletonTest instance = new SingletonTest(); 

  //            
  public static SingletonTest getInstancei() { 
    return instance; 
  } 
 
}

方法の一つは伝説の餓漢モードです。
長所は、書くのが簡単で、多スレッド同期の問題がなく、synchronizedによる性能問題を回避したことです。
欠点は、クラスSingleton Testがロードされると、staticのinstanceが初期化され、静的変数が作成されてメモリ空間が割り当てられ、その後、このstaticのinstanceオブジェクトがこのメモリを占めています。カテゴリがアンインストールされると、静的変数が破壊され、占有されたメモリが解放されます。そのため、ある特定の条件でメモリが消費されます。

/** 
 *   
 *        :   ,       
 *  
 */ 
public class SingletonTest {

  //         (     new SingletonTest()    )
  private SingletonTest() {  
  }  

  //     SingletonTest     (    ,        final   )
  private static SingletonTest instance;  

  //          (       SingletonTest,        ,           )
  public static SingletonTest getInstance() {  
    if (instance == null)  
      instance = new SingletonTest();  
    return instance;  
  }  
} 

方法の2は伝説の中の満腹モードです。
利点は、書き込みが比較的簡単で、クラスSingleton Testがロードされているとき、静的変数staticのinstanceが作成されていなくて、メモリ空間が割り当てられています。get Instanceメソッドが最初に起動されたときにinstance変数を初期化し、メモリを割り当てるので、特定のストリップでメモリが節約されます。
欠点は、同時環境において複数のSingleton Testの例が発生する可能性が高いことである。

/** 
 *   
 *        :   ,          
 *  
 */ 
public class SingletonTest {

  //         (     new SingletonTest()    )
  private SingletonTest() {  
  }  

  //     SingletonTest     (    ,        final   )
  private static SingletonTest instance;  

  //          (       SingletonTest,  synchronized         ,            )
  public static synchronized SingletonTest getInstance() {  
    if (instance == null)  
      instance = new SingletonTest();  
    return instance;  
  }  
} 

方法の3は方法の2の簡単な最適化です。
利点は、マルチスレッドアクセスを回避するために、synchronizedキーを使用すると、複数のSingleton Testが出現するということです。
欠点は、同期方法が頻繁に起動する場合、効率がやや低いことです。

/** 
 *    
 *         
 *            
 * 
 */ 
public class SingletonTest { 

  //           
  private SingletonTest() { 
   
  }  
  //          (    ,   final   ,  volatile         instance      ,   instance                ,       )
  private static volatile SingletonTest instance; 

  //           ,       
  public static SingletonTest getIstance() { 
    //           (        ,instance   null ,      ,      )
    if (instance == null) {
      //     (       ,       ,                 ,       )
      synchronized (SingletonTest.class) {
        //    ,   instance  
        if (instance == null) {
          instance = new SingletonTest();  
        }  
      }  
    }  
    return instance;  
  }  
}

方法4は一例モードの最適な実現である。メモリ占有率、効率、スレッド安全、マルチスレッド動作原子性。 
(実際には、Java反射機構によってprvateタイプの構造方法を実装することができ、このときは基本的にすべてのJava単一例が無効になる。反射についてはこのスレでは議論しませんが、デフォルトでは反射なし、よくある面接シーンです。
読んでくれてありがとうございます。みなさんのご協力をお願いします。ありがとうございます。