[英]How to reuse Singleton pattern?
當我想通過使用Java語言中的繼承來重用Singleton模式時,一些有趣的事情使我感到困惑。 我想與您分享,並要求您提供重用Singleton的解決方案。 我的代碼如下。
// Singleton.java
public class Singleton {
private static Singleton mSingletonInstance;
protected Singleton() {
System.out.println("New Singleton Instance.");
}
public static Singleton getInstance() {
if (mSingletonInstance == null)
mSingletonInstance = new Singleton();
return mSingletonInstance;
}
}
// ExtendedSingleton.java
public class ExtendedSingleton extends Singleton{
private static ExtendedSingleton mExtendedSingleton;
private ExtendedSingleton() {
super();
System.out.println("New Extended Singleton Instance.");
}
public static ExtendedSingleton getInstance() {
if (mExtendedSingleton == null)
mExtendedSingleton = new ExtendedSingleton();
return mExtendedSingleton;
}
public static void main(String args[]) {
ExtendedSingleton extendedSingleton = ExtendedSingleton.getInstance();
}
}
當然,我可以毫無例外地運行這些代碼。 但是我的意圖是通過擴展Singleton基類來重用Singleton模式。 但是,我必須重新鍵入子類中的所有代碼,並且根本不重用任何內容,這甚至在需要時編寫單獨的Singleton類也更好。 我真的很困惑。 誰能告訴我如何重用Singleton模式。 隨時修理我的英語,我知道我一定會犯很多錯誤。
如果您想使用Java的功能,我只會使用一個enum
。 您的課程看起來像
enum Singleton {
INSTANCE;
// add fields and methods to taste
}
enum ExtendedSingleton {
INSTANCE;
// delegate to Singleton as required.
}
如果需要繼承,則可以使用它們都實現的接口。
單例模式采用私有構造函數。 您違反了這條規則,這就是為什么感到困惑的原因。 不要擴展它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.