「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;。
留言
張貼留言