我想設計一個應該返回某個第三方對象的單例的類。 例如,我想創建一個第三方B類對象的單例。以下是我所做的設計。單例類返回兩個不同的單例對象
public class A{
private static A A = null;
private static B B = null;
private A() {
B = code to instantiate B Object;
}
public static synchronized A getAInstance() {
if(A ==null){
synchronized(A.class){
if(A == null){
A = new A();
}
}
}
return A;
}
public B getB(){
return B;
}
}
你能幫幫我,這是一個適當的單
我沒有看到任何阻止其他代碼同時實例化類B的對象的東西(不確定是否是問題或不)。 – Thilo
如果您將它視爲單個「A」實例的成員(因爲您似乎使用該「getB」實例方法),那麼'B'不應該是'static'。雖然'getB'可以與靜態''B'一起工作,這是非常令人誤解的。 –
'synchronized'方法內不需要第二個'synchronized'塊(在同一個監視器上)(可能會在方法中丟失)。 – Thilo