Java にスレッド セーフなシングルトン クラスがあると仮定すると、それを使用する最善またはより良い方法になります。たとえば、Singleton クラスが次のようになっているとします。
public class MySingleTon {
// my thread-safe code goes here
}
そして、上記のシングルトンを次の 2 つの方法で使用するサービス クラスがあります。
1:
public class MyService {
MySingleton singleton;
public void myMethod1() {
singleton = MySingleton.getInstance();
// code ...
}
public void myMethod2() {
singleton = MySingleton.getInstance();
// code...
}
public void myMethod3() {
singleton = MySingleton.getInstance();
// code...
}
}
また
2:
public class MyService {
public void myMethod1() {
MySingleton singleton = MySingleton.getInstance();
// code ...
}
public void myMethod2() {
MySingleton singleton = MySingleton.getInstance();
// code...
}
public void myMethod3() {
MySingleton singleton = MySingleton.getInstance();
// code...
}
}
ケース 1 ではシングルトンがインスタンス変数を介して参照され、ケース 2 ではシングルトンがメソッド ローカル変数として参照されます。上記の両方のスニペットがマルチスレッド環境で使用されていることを考えると、どちらがより良いオプションであり、その理由は?