雖然他們類似,但是工廠模式需要建立乙個工廠物件,然後呼叫方法來建立例項,而靜態工廠方法可以寫在類中直接替代構造器,並可以通過類名直接呼叫,無需重新建立物件。(構造器需要建立物件)
①靜態工廠方法有名字:
對於構造器來說,根據入參的不同可以有多個構造器,但是這些構造器的名稱都是一樣的,使用者在呼叫時就會一頭霧水。而使用了靜態工廠方法之後,你可以根據方法的功能給方法起不同的名字,達到見名知意的效果。
②無需重複建立物件:
靜態工廠方法能為重複的呼叫返回相同的物件(例項受控的類),可以使不可變的類確保不會存在兩個相等的例項,即當且僅當ab時才存在a.equals(b)為真,這時可以使用代替equals方法,提公升效能,列舉型別保證了這一點
③可以返回原返回型別的任何子型別的物件:
使用構造器,你只能返回一種型別的物件;而使用靜態工廠方法,你可以根據需要,返回原返回型別的任何子型別的物件。
靜態工廠方法代替構造器
靜態工廠方法的優勢 1它們有名稱,表意更清楚。2不必在每次呼叫它們的時候都建立乙個新物件 3它們可以返回原返回型別的任何子型別的物件。4在建立引數化型別例項的時候,它們是 變得更加簡單。缺點 1類如果不含有公有的或者受保護的構造器,就不能被子類化 2它們與其他的靜態方法實際上沒有任何區別,不方便辨認...
1 考慮用靜態工廠方法代替構造器
1.考慮用靜態工廠方法代替構造器 例子 public static boolean valueof boolean b 使用靜態工廠替代構造器的優勢 1 他們有名稱 2 不必每次呼叫都產生新的物件 3 可以返回原返回型別任何子型別的物件 4 建立引數化型別例項的時候,使 更簡潔 缺點 1 類如果不含...
No1 用靜態工廠方法代替構造器
先來看乙個例子 下面這個方法將boolean基本型別值轉換成了乙個boolean物件引用 public static boolean valueof boolean b 如果不通過共有的構造器,或者說除了公有的構造器之外,類還可以給他它的客戶端提供靜態工廠方法。提供靜態工廠方法而不是公有的構造器,這...