「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。這也是「靜態工廠方法」。

留言

這個網誌中的熱門文章

[Excel]國曆轉農曆VBA

「CSS」「div區塊介紹」 三欄式網頁排版設計

「生活」眉毛觀人