目的:アプリケーション全体が、唯一のインスタンス、このインスタンスへのポイントの型のインスタンスへの参照をすべて持っています。
唯一の皇帝(XXX)がある国と同様に、「皇帝」と呼ばれるこの時間誰もがXXXは、自分自身を指しと呼ばれています。
シングルトンコモンモードタイプ:
シングル飢え例:直接アウトオブジェクト定義
シングル怠惰な例:変数のみ与えられ、初期化できません。
私の要約:
飢えたタイプ、静的負荷の種類、性能の低下が、この方法でロードされた変更は、比較的簡単です
怠惰な人の ためにロードする必要の比較的遅いとの初めて!スレッド、危険な!
パッケージ reviewDemo;
//シングルトン
直接構築されたオブジェクトに//空腹中国風、
クラス SingleDemo {
プライベート 静的 SingleDemo S1 = 新しい SingleDemo();
プライベート SingleDemo(){
//コンストラクタ民営化の提供、あなたが外でオブジェクトを作成することはできません!
}
パブリック 静的 SingleDemo getS1(){
リターン S1 ;
}
}
//怠惰なタイプは、定義しますが、オブジェクトを作成できません。
クラス SingleDemo2 {
プライベート 静的 SingleDemo2 S3 ;
プライベート SingleDemo2(){
//コンストラクタ民営化の提供、あなたが外でオブジェクトを作成することはできません!
}
公共の 静的 SingleDemo2 getS3(){//これは、オブジェクトが作成される返すメソッドです!
もし(S3 == NULL ){
S3 = 新しいSingleDemo2();
} // と空腹の人のような違い、この時点では唯一のオブジェクトを作成するために!
リターン S3 ;
}
}
パブリック クラス Demo14 {
パブリック 静的 ボイドメイン(文字列[]引数){
SingleDemo S1 = SingleDemo。getS1();
SingleDemo S2 = SingleDemo。getS1();
SingleDemo2 S3 = SingleDemo2。getS3();
SingleDemo2 S4 = SingleDemo2。getS3();
システム。アウト .println(S1 == S2)。
システム。アウト .println(S3 == S4)。
}
}
出力:真真
注:列挙より安全な
パッケージ reviewDemo;
列挙ステュ{
ジェイク。
//コンストラクタは、セキュリティの反射がオブジェクトを作成することはできません、アップ民営化されます
プライベートスチュー(){
}
}
パブリック クラス Demo15 {
パブリック 静的 ボイドメイン(文字列[]引数){
}
}