シングルトンクラスのグローバル一意のインスタンスを保証します。
シングルトンパターンを飢え:
パブリック クラスシングルトン{ // 飢えモード 専用シングルトン(){} // コンストラクタプライベート プライベート 静的シングルトンシングルトン= 新しい新しいシングルトン(); //は、クラス内のインスタンスを作成し 、パブリック 静的シングルトン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