使用靜態工廠方法替代構造方法

2021-09-24 23:17:13 字數 1238 閱讀 1443

下面是一 些靜態工廠方法的常用名稱。以下清單並非完整:

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.與建構函式不同,不要求非得建立乙個新的物件.這使得一些非可變類可以使用乙個預先構造好的例項,或者把已經構造好的例項緩衝起來.同時,靜...