所謂靜態工廠方法,實際上只是乙個簡單的靜態方法,它返回的是類的乙個例項。特點就是構造方法是私有的。
靜態工廠方法有四大優勢:
優勢1.靜態工廠方法的名稱,因此比構造器更準確地描述返回的例項。
public
class
randomintgenerator
public
static randomintgenerator between(int max, int min)
public
static randomintgenerator biggerthan(int min)
public
static randomintgenerator smallerthan(int max)
public
intnext()
}
優勢2:不必再每次呼叫它們的時候都建立乙個新物件。
public
static
final boolean true = new boolean(true);
public
static
final boolean false = new boolean(false);
public
static boolean valueof(boolean b)
優勢3.靜態工廠方法可以返回原返回型別的子型別物件。
public
static
> enumsetnoneof(classelementtype)
優勢4.靜態工廠方法建立引數化(泛型)例項的時候更加簡潔。
public static hashmap newinstance()
這樣一來建立例項時就可以:
map<
string,list
<
integer
>> n = newinstance();
而不是map
<
string,list
<
integer
>> m =
new hashmap<
string,list
<
integer
>>();
第一條 考慮用靜態工廠方法代替構造器
獲取類的例項,類可以提供乙個公有的構造器,還可以提供乙個公有的靜態工廠方法 static factory method 它只是乙個返回類的例項的靜態方法。例如 public static boolean valueof boolean b 注意,這裡的靜態工廠方法與設計模式中工廠方法模式不同,使用靜...
第一條 考慮用靜態工廠方法代替構造器
第一條 考慮用靜態工廠方法代替構造器 靜態工廠方法非設計模式中的靜態工廠方法,它通過是static的靜態方法生產相關的類的方法,例如 integer i integer.valueof 1 他就是將1封裝成integer類的1 可能不說的不太對,大概因該是這個意思 當然也可寫為integer i n...
靜態工廠方法代替構造器
靜態工廠方法的優勢 1它們有名稱,表意更清楚。2不必在每次呼叫它們的時候都建立乙個新物件 3它們可以返回原返回型別的任何子型別的物件。4在建立引數化型別例項的時候,它們是 變得更加簡單。缺點 1類如果不含有公有的或者受保護的構造器,就不能被子類化 2它們與其他的靜態方法實際上沒有任何區別,不方便辨認...