単一の設計パターン・タイプと怠惰暴漢式
クラスが初期化されていない式遅延読み込み、遅延ロード。(プロフィール)
空腹中国風のクラスローダは、ロードが遅い、速い目標捕捉で初期化されます。
空腹中国風のスレッドセーフ、
怠惰な人間の必要性がそうでない場合は、安全でない、同期追加します。
第二に、飢えた男のスタイル
1つの パブリック クラスSingletonehan { 2 プライベート 静的 Singletonehanシングルトン= 新しいSingletonehan()。 3 プライベートSingletonehan(){ 4 } 5 パブリック 静的SingletonehanのgetInstance(){ 6 戻りシングルトン。 7 } 8 9 @Override 10 パブリック文字列のtoString(){ 11 リターン "Singletonehan {}" 。 12 } 13 }
テスト
1 パブリック クラスtestehan { 2 公共 静的 ボイドメイン(文字列[]引数){ 3 Singletonehan singletonehan = Singletonehan.getInstance()。 4 のSystem.out.println(singletonehan)。 5 } 6 }
第三に、怠惰なスタイル
1つの パブリック クラスSingletonlanhan { 2 // プライベート静的Singletonlanhanシングルトン=新しいSingletonlanhan()。 3 プライベート 静的 Singletonlanhanシングルトン= nullを。 4 5 プライベートSingletonlanhan(){ 6 } 7 8 パブリック 静的SingletonlanhanのgetInstance(){ 9 であれば(シングルトン== NULL ){ 10 シングルトン= 新しいSingletonlanhan()。 11 } 12 リターンシングルトン。 13 } 14 15 @Override 16 パブリック文字列のtoString(){ 17 リターン "Singletonlanhan {}" 。 18 } 19 }
テスト
1つの パブリック クラスのテスト{ 2 公共 静的 ボイドメイン(文字列[]引数){ 3 Singletonlanhan singletonlanhan = Singletonlanhan.getInstance()。 4 のSystem.out.println(singletonlanhan)。 5 } 6 }
結果
Singletonlanhan {}
終了コードで終了プロセス 0
怠惰なサプリメントの後にプラス同期
1つの パブリック クラスSingletonlanhan { 2 // プライベート静的Singletonlanhanシングルトン=新しいSingletonlanhan()。 3 プライベート 静的 Singletonlanhanシングルトン= nullを。 4 5 プライベートSingletonlanhan(){ 6 } 7 8 パブリック 同期 静的SingletonlanhanのgetInstance(){ 9 であれば(シングルトン== NULL ){ 10 シングルトン= 新しいSingletonlanhan()。 11 } 12 リターンシングルトン; 13 } 14 15 @Override 16 パブリック文字列のtoString(){ 17 リターン "锁Singletonlanhan {}" 。 18 } 19 }
結果
锁Singletonlanhan {}
プロセスは、終了コードを終了 0