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)靜態工廠方法和其他靜態方法並沒什麼不同,也只是一個靜態方法而已。