シングルトンデザインパターン1______

シングルトンクラスのグローバル一意のインスタンスを保証します。

シングルトンパターンを飢え:

パブリック クラスシングルトン{
     // 飢えモード
    専用シングルトン(){}   // コンストラクタプライベート

    プライベート 静的シングルトンシングルトン= 新しい新しいシングルトン(); //は、クラス内のインスタンスを作成し

    、パブリック 静的シングルトンgetSingleton(){ // 外部するオブジェクトのパブリックインターフェイスを取得する例
        戻りシングルトン; 
    } 

    パブリック 静的 ボイドメイン(文字列[]引数){ 
        シングルトンシングルトン = getSingleton();   // オブジェクトのインスタンスを取得する 
        シングルトンsingleton1 getSingleton =(); // 取得したオブジェクト・インスタンス
        System.out.println(singleton.hashCode())。// 1836019240 
        のSystem.out.println(singleton1.hashCode()); // 1836019240 
    } 

}

飢えモードのように関係なく、プログラムは、オブジェクトのインスタンスが作成されるリソースのより多くの廃棄物を必要とするかどうかのです。このように怠惰なモードを提案しています。それは次のとおりです。プログラムは、オブジェクトのインスタンスを使用する必要がある場合、オブジェクトのインスタンスを作成しました。しかし、このプロセスは、マルチスレッドの同時実行の問題を伴います。

レイジーシングルトンパターン:

パブリック クラスSingleton_Lazy_Man { 

    // コンストラクタプライベート
    プライベートSingleton_Lazy_Man(){} 

    // 直接インスタンスを作成しない、オブジェクトのグローバル一意のインスタンスを宣言
    プライベート 静的Singleton_Lazy_Manのsingleton_lazy_manを; 

    // インターフェイスを外側合計へのアクセスを提供する定義、作成唯一のインスタンスは、オブジェクト
    のパブリック 静的Singleton_Lazy_Man getSingleton_lazy_man(){
         IFヌル == singleton_lazy_man){ // オブジェクトのインスタンスが作成されていない
            同期(Singleton_Lazy_Man。クラス){
 //                 IF(singleton_lazy_man == NULL){
 //                     singleton_lazy_man新しい新しいSingleton_Lazy_Man =を( );
 //                } 
                singleton_lazy_man = 新しいSingleton_Lazy_Man()。
            } 
        } 
        戻りsingleton_lazy_man。
    } 

    パブリック 静的 ボイドメイン(文字列[]引数){ 
        Singleton_Lazy_Man singleton_lazy_man = getSingleton_lazy_man()。
        Singleton_Lazy_Man singleton_lazy_man1 = getSingleton_lazy_man()。
        // 打印发现のhashCode码是相同的
        のSystem.out.println(singleton_lazy_man.hashCode()); 
        System.out.println(singleton_lazy_man1.hashCode())。
    } 

}

 

 

 

P

おすすめ

転載: www.cnblogs.com/xbfchder/p/11450671.html