スレッドセーフなシングルトンパターンの実装クラス

 

シングルトン(Singletonパターン)は、Javaのデザインパターンの最も簡単なの一つです。デザインパターンのこのタイプのオブジェクトを作成するための最良の方法を提供し、スキーマを作成します属します。

 

このモデルは、単一のオブジェクトが作成されていることを保証しながら、独自のオブジェクトを作成するための責任がある単一のクラスが含まれます。

このクラスは、オブジェクトが直接アクセスできる、オブジェクトクラスのインスタンスにアクセスするための唯一の方法を提供します。
一つだけシングルトンクラスのインスタンス。
シングルトンクラスは、独自のインスタンスを作成する必要があります。
シングルトンクラスは、他のすべてのオブジェクトにこの例を提供しなければなりません。

1.シングルトン - スレッドセーフ飢えモード

パブリッククラスシングルトン{ 
プライベート静的シングルトンインスタンス=新しいシングルトン()。
プライベートシングルトン(){

}
パブリック静的シングルトンのgetInstance(){
戻りインスタンス。
}
}

2.シングルトン - スレッドセーフ怠惰モード 

パブリッククラスシングルトン{ 
プライベート静的シングルトンインスタンス= NULL;
プライベートシングルトン(){

}
  //如果不加同期、则是线程不安全的
シングルトンのgetInstance(){同期パブリック静的
場合(例えば== NULL){
インスタンス=新しいシングルトン()。
}
インスタンスを返します。
}
}

3.シングルトン - スレッドセーフ怠惰モード改良版(ダブルチェックロック)

/ ** 
*ダブルロック:同期オーバーヘッドを低減するために
* /
publicクラスシングルトン{
//静的可視例
プライベート揮発性静的インスタンスシングルトン= NULL;
//引数なしコンストラクタ
プライベートシングルトン(){

}
)公共シングルトンのgetInstance({
IF(例えば== NULL){
同期(Singleton.class){
IF(例えば== NULL){
インスタンスシングルトン新しい新=();
}
}
}
戻りインスタンス;
}
}

4.シングルトン - プライベート内部ファクトリクラス(スレッドセーフ)

public class Singleton {
private Singleton(){
}

public static Singleton getInstance(){
return SingletonFactory.Instance;
}

private static class SingletonFactory{
private static Singleton Instance = new Singleton();
}
}
//内部类也可以换成内部接口,但是工厂类变量的作用域需为public

おすすめ

転載: www.cnblogs.com/cdlyy/p/12046618.html