一、優先考慮靜態工廠方法代替構造方法
當乙個類需要有多個構造方法時,可以考慮使用靜態工廠方法來代替這些構造方法。
這樣做的好處在於:
第一:靜態工廠方法可以通過方法簽名對所要建立的物件有乙個較為清晰的描述,而構造方法不能做到
第二:靜態工廠方法可以避免重複建立相同的物件(boolean 示例可以說明)
第三:靜態工廠 方法可以返回所要返回型別的任何子類(這一點在框架中尤其是api中非常有用)
第四:建立引數化例項時可以簡化**(hashmap 示例可以說明)
示例:1、boolean 示例:
publice static
boolean
valueof(boolean
b)
2、hashmap 示例:
如果想要構造這樣的例項 :
map
, list>> map = new
hashmap, list>> ();
通過構造方法來實現就很麻煩,但是通過靜態工廠方法就會相對簡單。
publice static
mapnewinstance()
map, list>> map = hashmap.newinstance();
二、使用builder模式來處理多構造引數物件建立
1、當乙個物件的構造引數有多個且大多都是可選時,應該考慮使用builder模式。
2、當乙個類建立好後,後續如果還要擴充套件成員變數,應該考慮使用builder模式。
為什麼不使用層疊構造器和靜態工廠方法?
答:層疊構造器過多對使用者來說並不是件友好的事,而且會帶來一定的維護成本 。
靜態工廠方法更適合引數少的構造物件。
示例 :
public
class
cat private
string color;
private
integer age;
private
character ***;
private
string name;
private
double
weight;
public
static class
catbuilder
public
catbuilder age(integer age) throws exception
public
catbuilder ***(character ***)
public
catbuilder name(string name)
public
catbuilder weight(double
weight)
public
cat build()
}public
string getcolor()
public
integer getage()
public
character get***()
public
string getname()
public
double
getweight()
@override
public
string tostring() '
; }
}
Java物件的建立
使用new關鍵字 使用物件的clone方法 使用反序列化 使用class類的newinstance方法 使用constructor的類的newinstance方法 方式一 person lamze new person lamze 18 方式二 使用clone方法建立物件 步驟 1 要建立的物件的類...
java物件的建立過程
以一道例題開始 public class test static public test string str public static int print string str public static void main string args 執行結果是 1 j i 0 n 0 2 構造快...
Java建立物件的順序
建立乙個類 c的物件 1.載入所有得類。2.執行靜態初始化。3.分配記憶體,並初始化為零。4.處理呼叫的c的建構函式的引數。6.處理隱式或者顯式的建構函式 this 或者super 7.初始化c中的變數。8.執行c的 instance initialization 9.執行 呼叫的c的建構函式。cl...