「Java」「enum列舉」 Chapter4 Question6
Which two are true about Singletons?
1. A Singleton must implement Serializable.
2. A Singleton has only the default constructor.
3. A Singleton implements a factory method.
4. A Singleton improves a class's cohesion.
5. Singletons can be designed to be thread-safe.
答案:
3 與 5
解析:
1. 單一實作必須繼承序列化。 //錯,單一實作與序列化無關
2. 單一實作有唯一的default建構子。 //錯。單一實作的建構子是private
3. 單一實作繼承factory方法。 //對,可使用getInstance()方法
4. 單一實作改善 內聚性。 //錯,只有多型才能改善內聚性
5. 單一實作可設計成執行續安全。 //對。單一實作,用於確保執行環境或JVM裡只有一個物件實例。
重點:
- 建構子必須是private,加強封裝以及封鎖外部類別使用new來建構物件。能保證單一物件。
- 由於類別外部無法建構物件,就必須依賴類別內部建構物件,來提供一個出口管道。
- 加上static關鍵字,更能確保 JVM 中只有一份物件。
- 加上final關鍵字,能要求變數永遠指向該物件。
- 要提供一個出口管道,就必須用到 getter 方法。
- 為了回傳static欄位變數,所以get方法也必須使用static。這也是「靜態工廠方法」。
留言
張貼留言