第一條 用靜態工廠方法代替構造器

2021-07-09 06:34:53 字數 1266 閱讀 4715

所謂靜態工廠方法,實際上只是乙個簡單的靜態方法,它返回的是類的乙個例項。特點就是構造方法是私有的。

靜態工廠方法有四大優勢:

優勢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它們與其他的靜態方法實際上沒有任何區別,不方便辨認...