Effective Java隨筆(一) 善於使用靜態工廠方法代替構造函數獲取實例

1.善於運用靜態工廠方法代替構造器獲取實例對。
1)靜態工廠方法有函數名。相比較構造函數,靜態工廠方法有方法名,有時比類名能更加準確地定義實例。在構造器重載的類中,往往實例化時無法清楚或者記住使用哪個構造器。而且無法區分同一參數實例之間的不同。而靜態工廠方法可以通過不同方法標籤解決上述問題。即使是相同參數,也可通過方法名定義不同的實例。
2)靜態工廠方法可以不用返回新的實例。
如:

 private static Demo demo=new Demo();
 public static Demo  getDemo(){
     return demo;
 }

3)靜態工廠方法可以返回任意子類實例。
4)創建參數化類型實例的時候,使得代碼更加簡潔。
如:

public static <K, V>  HashMap<K, V> newInstance(){
        return new HashMap<K, V>();
        }

缺點
1)如果類的構造函數private或者frendly,那麼靜態工廠方法將不能獲取子類實例。因該類已無法被繼承。
2)靜態工廠方法和其他靜態方法並沒什麼不同,也只是一個靜態方法而已。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章