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