先來看乙個例子:
下面這個方法將boolean基本型別值轉換成了乙個boolean物件引用:
public
static boolean valueof
(boolean b)
如果不通過共有的構造器,或者說除了公有的構造器之外,類還可以給他它的客戶端提供靜態工廠方法。
提供靜態工廠方法而不是公有的構造器,這樣做既有優勢,也有劣勢。
優勢:1 有名稱
2 不必在每次呼叫它們的時候都建立乙個新物件
3 它們可以返回原返回型別的任何子型別的物件
4 所返回的物件的類可以隨著每次呼叫而發生變化,這取決於靜態工廠方法的引數值
5 方法返回的物件所屬的類,在編寫包含該靜態工廠方法的類時可以不存在
缺點:1 類如果不包含公有的或者受保護的構造器,就不能被子類化
2 很難發現,靜態工廠方法藏得深
總之,靜態工廠方法和公有構造器各有用處,我們要理解各自長處,靜態工廠方法經常更加合適,不能第一反應就是提供公有構造器而忽略了靜態工廠方法。
1 考慮用靜態工廠方法代替構造器
1.考慮用靜態工廠方法代替構造器 例子 public static boolean valueof boolean b 使用靜態工廠替代構造器的優勢 1 他們有名稱 2 不必每次呼叫都產生新的物件 3 可以返回原返回型別任何子型別的物件 4 建立引數化型別例項的時候,使 更簡潔 缺點 1 類如果不含...
靜態工廠方法代替構造器
靜態工廠方法的優勢 1它們有名稱,表意更清楚。2不必在每次呼叫它們的時候都建立乙個新物件 3它們可以返回原返回型別的任何子型別的物件。4在建立引數化型別例項的時候,它們是 變得更加簡單。缺點 1類如果不含有公有的或者受保護的構造器,就不能被子類化 2它們與其他的靜態方法實際上沒有任何區別,不方便辨認...
第1條 考慮用靜態工廠方法代替構造器
第1條 考慮用靜態工廠方法代替構造器 優點 1.靜態工廠方法有名稱 2.不必每次呼叫的時候都建立乙個新的物件 3.可以返回型別的任何子型別的物件 4.在建立引數化型別例項的時候,使 更加簡潔 缺點 1.類如果不含有共有的或者受保護的構造器,就不能被子類化 2.與其他的靜態方法實際上沒有任何區別 pu...