「Java」「Singleton」 Chapter4 Question7
Given: A
------------------------------------
Given: B
------------------------------------
Given: C
------------------------------------
Given: C
------------------------------------
Answer:
A. 是private建構子: private SingletonA(){}
B. 是protected建構子: protected SingletonB(){}
C. 是預設建構子: SingletonC(){}
D. 列舉,宣告private建構子
說明:
A. 無法使用SingletonA a = new SingletonA();,必須使用 SingletonA a = SingletonA.getInstance();。
B. 可以使用SingletonB b = new SingletonB();,證明不是Singleton設計模式。
C. 可以使用SingletonC c = new SingletonC();,證明不是Singleton設計模式。
D. 無法使用SingletonD d = new SingletonD();,必須使用 SingletonD d = SingletonD.INSTANCE;。
class SingletonA{ private static SingletonA instance; private SingletonA() {} public static synchronized SingletonA getInstance() { return instance; } }
------------------------------------
Given: B
class SingletonB{ private static SingletonB instance = new SingletonB(); protected SingletonB() {} public static SingletonB getInstance() { return instance; } }
------------------------------------
Given: C
class SingletonC{ SingletonC(){} private static class SingletonHolder{ private static final SingletonC INSTANCE=new SingletonC(); } public static SingletonC getInstance() { return SingletonHolder.INSTANCE; } }
------------------------------------
Given: C
enum SingletonD{ INSTANCE; }
------------------------------------
Answer:
A. 是private建構子: private SingletonA(){}
B. 是protected建構子: protected SingletonB(){}
C. 是預設建構子: SingletonC(){}
D. 列舉,宣告private建構子
說明:
A. 無法使用SingletonA a = new SingletonA();,必須使用 SingletonA a = SingletonA.getInstance();。
B. 可以使用SingletonB b = new SingletonB();,證明不是Singleton設計模式。
C. 可以使用SingletonC c = new SingletonC();,證明不是Singleton設計模式。
D. 無法使用SingletonD d = new SingletonD();,必須使用 SingletonD d = SingletonD.INSTANCE;。
留言
張貼留言