- 靜態工廠方法定義:
返回類實例的靜態方法,與設計模式中的工廠方法模式不同。 - 優點:
- 靜態工廠方法有名稱。我們可以通過不同的名稱來區分參數列表不同的構造器,這樣顯然更加的清楚,便于用戶理解。
- 不必在每次調用時創建一個新的對象。重復利用對象,避免重復創建相同的對象,提升性能。
- 可以返回類型的任何子類型的對象。我們在選擇返回對象的類型時,有了更大的靈活性。適用于基于接口的的框架。
-
使代碼變得更加簡介。如:
<code>Map<String,List<String>> m=new HashMap<String,List<String>>();
//可更換為
Map<String,List<String>> m=HashMap.newInstance();</code>
- 缺點:
1.** 一個類如果不含有public或者protect的構造器,就不能被子類繼承。**
2.靜態工廠方法與普通靜態方法沒有任何區別,在API文檔中不會被明確標識出來。所以在查詢使用靜態工廠方法創建實例對象時,會十分困難。 - 靜態工廠方法的管用名稱:
- ValueOf——類型轉換方法,返回與參數具有相同值的實例。
- of——同上
- getInstance——返回通過參數描述的實例,對Singleton來說,永遠返回唯一的實例。
- newInstance——確保返回的每個實例都與其他實例不同
- getType——像getInstance一樣,但是在工廠方法處于不同的類中的時候使用。
- newType——像newInstance一樣,但是在工廠方法處于不同的類中的時候使用。