JAva単例モード説明

1818 ワード

私の最初のブログということになりますが、これまでも欲しいと思っていましたが、書きたい段階に止まっていました.今日は、印象を深めるためのブログを書くことにしました.個人的な技術を高めるためにも、プログラマーの道を宣言する正式な始まりでもあります.他の人を助けることができれば、もっといいです.くだらないことは言わないで、始めましょう.
         単例モードは、その名の通り、栗を挙げると、栗が1つしか食べられないという冗談です.
         次は本題に入ります(もう始まったようですが、皆さんは見ていないふりをしています)
        
         単一設計モードとは、Singletonモードを使用しているクラスの場合、クラスが作成されると、外部からアクセスするためにインスタンスオブジェクトが1つしか生成されず、グローバルなアクセスポイントが提供される作成モードです.
         コアポイントは次のとおりです.
1.     単一の設計モードを採用したクラスの構造方法をプライベート化(privateで修飾)し、他のクラスの直接アクセスを許可しません.    
2.     クラスのインスタンス化オブジェクトを内部で生成し、private staticタイプにカプセル化します.
3.     静的メソッドを定義してクラスのインスタンスを返します.
/** 
 *    
 *        :   ,            
 */  


public class Test {
		
	//           
	private Test() {
	}
	//               ,   Static final  
	private static final Test test = new Test();
	//          
	public static Test getInstance(){
		return test;		
	}
}
の利点:書くのが簡単で、マルチスレッド同期の問題がなく、synchorizedによるパフォーマンス最適化の問題を回避します.
欠点:
このクラスがロードされるとstatic testが初期化され、静的変数が作成され、メモリ領域が割り当てられます.その後、このstaticのtestはメモリを一致して占有します.このインスタンスを使用しなくても、zhiはクラスがアンインストールされて破棄されると、静的変数が破壊され、すべてのメモリが解放されるため、特定の条件でメモリが消費されます.
public class Test {
	//   
	//   ,     
	//           ,    new Test    。
	private Test() {
		
	}
	
	//    Test     (    ,         )
	private static Test test;

	//        (       ,       ,            )
	public static Test getInstance(){
		
		if(test == null){
			test = new Test();
		}
		return test;		
		
	}	
	
}
利点:Testがロードされるとtestにスペースが割り当てられず、空であるためgetInstanceが実行される場合にのみtestが作成される.
欠点:実際の実行では複数のtestのインスタンスが発生する可能性があります.