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