Item 1. 考慮用靜態工廠方法替代構造器 獲得一個類的實例時我們都會採取一個公有的構造器。Foo x = new Foo(); 同時我們應該掌握另一種方法就是靜態工廠方法(static factory method)。 一句話總結,靜態工廠方法其實就是一個返回類的實例的靜態方法。 書中給出的例子 ...
Item 1. 考慮用靜態工廠方法替代構造器
獲得一個類的實例時我們都會採取一個公有的構造器。Foo x = new Foo();
同時我們應該掌握另一種方法就是靜態工廠方法(static factory method)。
一句話總結,靜態工廠方法其實就是一個返回類的實例的靜態方法。
書中給出的例子是Boolean的valueOf方法:
通過valueOf方法將boolean基本類型轉換成了一個Boolean類型,返回了一個新的對象引用。
除valueOf外,像Java中的getInstance和newInstance等方法都為靜態工廠方法。
靜態工廠方法不同於設計模式中的工廠方法。
那麼為什麼要使用靜態工廠方法呢?下麵是它的幾大優勢:
它們有名字
給構造器起名字,增強了代碼的可讀性。
如果一個構造器的參數並不能確切描述它返回的對象,這時候可以考慮靜態工廠方法。
或者你的多個構造器只是在參數列表中的參數順序上有所不同,那麼除非你提供了詳盡的文檔說明,否則你下次使用時就會一臉懵逼,這幾個構造器到底要選哪個