用工廠方法替代構造器
阿新 • • 發佈:2021-08-02
------------恢復內容開始------------
程式碼樣例
public class Singleton { private static Singleton instance; private Singleton() { } public static Singleton getInstance() { instance = instance == null ? new Singleton() : instance; return instance; } }
靜態工廠方法相較於構造器的優勢
優勢1:它們有名字
如果構造器本身沒有確切的描述正被返回的引數,那麼具有適當名稱的靜態工廠方法會更容易使用,產生的客戶端程式碼也具有易讀性。
優勢2:不必再每次呼叫的時候都建立一個新的物件
不可變類可以使用預先構建好的例項,或者將構建好的例項快取起來,進行重複的利用,從而避免建立不必要的重複物件。
優勢3:可以反回原返回型別的任意子型別
讓我們在選擇返回型別的時候具有很多靈活性。
優勢4:所返回的物件的類可以隨著每次呼叫而發生變化,取決於靜態工廠方法的引數值
------------恢復內容結束------------