3 回答

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個(gè)贊
構(gòu)建器模式可用于:
對(duì)用于初始化對(duì)象的數(shù)據(jù)進(jìn)行一些檢查。例如,如果您需要在變量之間進(jìn)行雙重檢查
創(chuàng)建不可變對(duì)象。一旦初始化就不能更改對(duì)象,因此不能使用 setter
添加代碼的可讀性。
減少用于初始化對(duì)象的代碼
使實(shí)例處于有效狀態(tài)。在調(diào)用所有 setter 之前,使用 setter 對(duì)象實(shí)例可能處于無(wú)效狀態(tài)。
注意使用構(gòu)建器創(chuàng)建不可變對(duì)象。
當(dāng)您在多線程環(huán)境中工作時(shí),可以在線程之間共享不可變對(duì)象,而無(wú)需顯式同步。因?yàn)閷?duì)象在這段時(shí)間內(nèi)不能改變,所以不可能有競(jìng)爭(zhēng)條件同時(shí)被兩個(gè)線程訪問(wèn)和修改。

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊
無(wú)需使用任何模式。您甚至可以通過(guò)公開變量來(lái)避免設(shè)置器。然而,
Builder 設(shè)計(jì)模式的目的是將復(fù)雜對(duì)象的構(gòu)造與其表示分離
來(lái)源:https ://en.wikipedia.org/wiki/Builder_pattern

TA貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊
使用構(gòu)建器模式有幾個(gè)優(yōu)點(diǎn):
與設(shè)置器(使您的類可變)不同,構(gòu)建器可用于構(gòu)造不可變對(duì)象。在許多情況下,不可變對(duì)象比可變對(duì)象更受歡迎,因?yàn)樗鼈兏子诶斫夂途S護(hù),并且它們避免了在多線程環(huán)境中鎖定的需要。
構(gòu)建器可以確保對(duì)象即使在構(gòu)建后直接滿足某些不變量。例如,如果您的類有一個(gè)
name
字段不能是null
,則構(gòu)建器可以檢查此條件并在不滿足時(shí)無(wú)法構(gòu)造對(duì)象。
您也可以通過(guò)使用將所有類內(nèi)容作為參數(shù)的構(gòu)造函數(shù)來(lái)完成這兩件事,但是當(dāng)您的類有多個(gè)要初始化的字段時(shí),這將是非常不可讀的。
添加回答
舉報(bào)