下面是一 些靜態工廠方法的常用名稱。以下清單並非完整:
from——a
型別轉換方法,它接受單個引數並返回此型別的相應例項,例如:
date d = date.from(instant);
of——
乙個聚合方法,接受多個引數並返回該型別的例項,並把他們合併在一起,例如:
set facecards =
enumset.of(jack, queen, king);
valueof——from
和 to
更為詳細的替代 方式,例如:
biginteger prime = biginteger.valueof(integer.max_value);
instance
或 getinstance——
返回乙個由其引數
(如果有的話
) 描述的例項,但不能說它具有相同的值,例如:
stackwalker luke = stackwalker.getinstance(options);
create
或 newinstance——
與 instance
或 getinstance
類似,除了該方法保證每個呼叫返回乙個新的例項,例如:
object newarray = array.newinstance(classobject, arraylen);
gettype——
與 getinstance
類似,但是如果在工廠方法中不同的類中使用。
type
是工廠方法返回的物件型別,例 如:
filestore fs = files.getfilestore(path);
newtype——
與 newinstance
類似,但是如果在工廠方法中不同的類中使用。
type
是工廠方法返回的物件型別,
例如:buweredreader br = files.newbuweredreader(path);
type—— gettype
和 newtype
簡潔的替代方式,例如:
list litany = collections.list(legacylitany);
總之,靜態工廠方法和公共構造方法都有它們的用途,並且了解它們的相對優點是值得的。通常,靜態工廠更可
取,因此避免在沒有考慮靜態工廠的情況下提供公共構造方法。
使用靜態工廠方法代替構造器
雖然他們類似,但是工廠模式需要建立乙個工廠物件,然後呼叫方法來建立例項,而靜態工廠方法可以寫在類中直接替代構造器,並可以通過類名直接呼叫,無需重新建立物件。構造器需要建立物件 靜態工廠方法有名字 對於構造器來說,根據入參的不同可以有多個構造器,但是這些構造器的名稱都是一樣的,使用者在呼叫時就會一頭霧...
靜態工廠方法代替構造器
靜態工廠方法的優勢 1它們有名稱,表意更清楚。2不必在每次呼叫它們的時候都建立乙個新物件 3它們可以返回原返回型別的任何子型別的物件。4在建立引數化型別例項的時候,它們是 變得更加簡單。缺點 1類如果不含有公有的或者受保護的構造器,就不能被子類化 2它們與其他的靜態方法實際上沒有任何區別,不方便辨認...
靜態工廠方法
它只是乙個簡單的靜態方法,返回類的乙個例項.1.與建構函式不同,靜態工廠方法具有名字.選用適當名字的靜態工廠方法可以使乙個類更易於使用,並且相應的客戶 更易於閱讀.2.與建構函式不同,不要求非得建立乙個新的物件.這使得一些非可變類可以使用乙個預先構造好的例項,或者把已經構造好的例項緩衝起來.同時,靜...