1。説明
1)シングルトンパターン:クラスのインスタンスが1つしかないことを確認し、自分でインスタンスを整えて、このインスタンスをシステムに提供します
2)シングルトンパターン分類:シングルトンパターン(クラスがロードされているときに独自の参照にオブジェクトをインスタンスしました)、怠zyなシングルトンパターン(オブジェクトは、インスタンスを取得する方法がgetinstanceなどと呼ばれる場合にのみインスタンス化されます)(Java Singletonモードのパフォーマンスは怠zyなシングルトンモードよりも優れています。レイジーシングルトンモードは一般にC ++で使用されます)
3)シングルトンパターン要素:
a)プライベート建設方法
b)プライベート静的参照は、独自のインスタンスを指します
c)返品値として独自のインスタンスを備えたパブリック静的方法
2。例
ハンガーシングルトンモード:
コードコピーは次のとおりです。
パッケージcom.wish.modedesign;
パブリッククラスHungrySingleton {
Private Static HungrySingleton Instance = new HungrySingleton();
Private HungrySingleton(){
}
public Static HungrySingleton getInstance(){
インスタンスを返す;
}
}
怠zyなシングルトンモード:
コードコピーは次のとおりです。
パッケージcom.wish.modedesign;
パブリッククラスシングルトン{
privatesingleton(){
}
プライベート静的シングルトンインスタンス。
public static同期されたSingleton getInstance(){//マルチスレッド時にスレッドの安全性に注意を払う
if(instance == null){
instance = new Singleton();
}
インスタンスを返す;
}
}
テストクラスdriver.java
コードコピーは次のとおりです。
パッケージcom.wish.modedesign;
パブリッククラスドライバー{
public static void main(string [] args){
Singleton S1 = Singleton.getInstance();
Singleton S2 = Singleton.getInstance();
System.out.println(s1 == s2);
}
}
3.利点と適用可能なシナリオ
1)シングルトンモードの利点:
メモリには1つのオブジェクトのみがあり、メモリスペースを保存します。
頻繁な作成とオブジェクトの破壊を回避すると、パフォーマンスが向上する可能性があります。
共有リソースの複数の職業を避けてください。
グローバルにアクセスできます。
2)該当するシナリオ:
頻繁にインスタンス化してから破壊する必要があるオブジェクト。
オブジェクトを作成するときに時間がかかりすぎたり、リソースが多すぎたりするが、よく使用されるオブジェクト。
ステートフルなツールのようなオブジェクト。
データベースまたはファイルに頻繁にアクセスするオブジェクト。
4。使用するときに注意すべきこと
1)使用する場合、反射モードを備えたシングルトンを作成することはできません。そうしないと、新しいオブジェクトがインスタンス化されます。
2)怠zyなシングルトンモードを使用する場合、スレッドの安全性の問題に注意を払う
3)空腹のシングルトンパターンと怠zyなシングルトンパターンの構築方法は、両方ともプライベートであり、したがって、一部のシングルトンパターンを継承することはできません(登録モードなど)。