我想在Java中正確實現工廠模式。我已經這樣做了(下面的代碼),任何人都可以指出,如果這是一個「適當」的方式,或任何設計缺陷?Factory,Singleton,最佳實踐
我的想法/限制是:
- 別的東西必須能繼承這個廠,所以我沒有選擇,使其枚舉。
- 我做到了這家工廠一個單,以便有沒有運行其它工廠橫行
- 我想讓它線程安全的,所以我選擇了把同步鎖
self
- 有沒有的東西一噸有在工廠去,所以性能(空間/時間)沒有太大的交易
的代碼是一樣的東西:
public class MyFactory {
private static MyFactory self;
private MyFactory() {
synchronized (self) {
if (self == null) {
self = new MyFactory();
}
}
}
}
請問這一段代碼從此放棄我問題?
另一種方法是一樣的東西
public class MyFactory {
private static MyFactory self = new MyFactory();
}
哪一個更好,什麼是這些類型的懶人VS渴望實例化的考慮?
'synchronized(self)'我產生一個'NullPointerException',要麼使用另一個'static final'對象或者同步這個方法。第二個例子可以允許兩個或者多個線程創建多個工廠實例。 – MadProgrammer
工廠和單身人士是兩個不同的概念,最好是將他們分開處理。你打算使用任何框架?如果是,單身人士應該是框架的責任,例如,彈簧。 – yadab
@MadProgrammer等等,真的嗎?我無法同步一個構造函數(我認爲這相當於一個靜態初始化函數?) –