天天看點

靜态工廠方法代替構造函數的優缺點

優點:

1.與構造函數不同,靜态工廠方法具有名字。這個好處可以幫助我們擺脫一個類隻能有一個原型相同的構造函數的限制。

2.與構造函數不同,靜态工廠方法每次被調用的時候,不要求非得建立一個新的對象(signleton模式)。

3.與構造函數不同,他們可以傳回一個原傳回類型的子類型對象(服務提供者架構的基礎)。

缺點:

1. 類如果不含公有的或者受保護的構造函數,就不能被子類化。如果一個類沒有公有的或者受保護的構造函數,那麼這個類就不能被繼承。比如:

public class TestObject {

private TestObject(){

System.out.println("new a TestObject!");

}

}

public class SubObject extends TestObject{             //編譯報錯,提示父類的構造函數是不可見的

}

2. 與其它靜态方法沒有任何差別。常用的靜态工廠方法:valueof,getInstance

繼續閱讀