1. 程式人生 > 其它 >用工廠方法替代構造器

用工廠方法替代構造器

------------恢復內容開始------------

程式碼樣例

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:所返回的物件的類可以隨著每次呼叫而發生變化,取決於靜態工廠方法的引數值

------------恢復內容結束------------