單讓我們假設我們有基礎類:的Java:從基類
public class Base {
public Base(int i) {
/* ... */
}
/* ... */
}
我們希望在此基礎上類來創建單。問題是,有類公共構造,所以擴展它會導致單身有公共的構造,太:
public class SingletonBase extends Base {
private static final SingletonBase _instance = new SingletonBase();
private SingletonBase() {
super(0);
}
public SingletonBase(int i) { // Want to avoid this!
super(i)
}
public static void getInstance() {
return _instance;
}
/* ... */
}
辛格爾頓,當然不能有公共構造函數,所以我們要避免這種情況。 那麼,什麼是最優雅的方式/模式具有合適的Singleton功能從基類?
編輯:修改基類是禁止的,因爲它來自外部庫。
只是聲明「SingletonBase」的所有構造函數都是私有的 – kiruwka
忘了提及,我無法修改基類 - 它來自外部庫。 – Kao
但SingletonBase只能有一個構造函數...只需刪除公共的一個和voilla。爲什麼你在地球上使用單例的抽象?如果你想重用框架代碼,只需使用單例內的Base對象。 – Gaskoin