為什麼一定要弄乙個Builder內部類?

時間 2021-05-05 16:16:22

1樓:巽澤淵

其實所有的設計模式都可以認為是無用功...拿Builder模式來說,樓主寫的也是一種builder嘛!怎麼爽怎麼構造,哪個都不差。直到有一天我需要寫乙個不可變類的時候....

2樓:小戀

因為這個通常用於不可變物件。

建立不可變物件是乙個好習慣,可以保證執行緒安全。為了建立乙個不可變物件,你必須在這個物件初始化的時候直接敲定你的所有成員的值,必須寫乙個冗長的構造方法。為了簡化構造方法,免得寫個構造一直在查傳參順序和形式,Builder類就應運而生。

憑藉著IDEA的幫助,你可以輕鬆的鏈式呼叫Builder類的方法傳入各個成員。最後直接build方法生成你需要的不可變物件。

3樓:Xpecya

其實最需要builder的是一些十分難以構造的複雜業務物件,比方說hibernate的sessionFactory物件,那玩意真的不是set幾個屬性就行了的。

至於只是屬性比較多的,比如各種config物件,其實怎麼處理都可以,你這種方式可以,builder也可以,怎麼都可以,其實關係都不大。

當然這個問題其實有很多更加學院派的解讀,但是我個人覺得扣概念沒什麼意思,自己怎麼順手怎麼玩就可以了。

總而言之,一句話,別弄個十幾二十來個引數的建構函式出來就行了。

其他玩法,基本怎麼都行

4樓:

我一直都向題主這麼用,也沒有感覺有什麼問題,必要屬性放建構函式,其他就走set。我覺得builder類這東西就是強行搞個工廠方法,形式大於實際意義

5樓:兩極化

首先,鏈式呼叫的風格並不是多麼好的解決方案。在我們常用的框架類庫裡面,其實你可以發現,實現鏈式呼叫這種風格的大多是以下兩種:Builder物件和容器物件。

因為這些物件的鏈式呼叫的行為是可控制的或者是語義統一的。而用在普通物件上面就不能區分物件原有行為與鏈式呼叫行為之間的區別。

其次,使用builder與使用連續的set或者說題主那種鏈式的set操作,所表示的行為完全不同。連續的set操作所展示的行為是:建立乙個物件—>賦值;builder展示的行為是:

構造工件—>使用構造的工件建立物件。這種行為上的差異,可以在許多地方造成各種不同的影響。比方說建造乙個不可變物件。

為什麼一定要乙個孩子?

三葉兒與愁容騎士 不一定啊。你現在不要孩子你以後肯定會後悔的 這種蠢言論我聽多了,每個人以後都肯定會死,所以現在就不活了?我身邊有太多這樣的例子了,別說生孩子,連婚都不想結,男生女生都有,包括我自己也是。我是覺得,乙個人受過很好的教育,有著很好的生活,這些東西應該給ta反傳統的底氣,給ta多一種選擇...

乙個人為什麼一定要努力?

lly 選擇權乙個人最大的自由就是可以選擇以自己想要的方式過自己的一生,想吃想玩想用什麼想從事什麼工作或者不工作都能夠自主決定。不用為生存的成本而降低自己的標準。所謂選擇就是擁有自由,精神自由和物質自由,你思維不受困,生活不受困,可以以自我的意識為最高意識。充實一輩子很長又,如果什麼都不幹,一成不變...

為什麼一定要有乙個巫妖王啊?

王葉凱 實際上,沒必要。天災軍團南下也不是啥新鮮事了,最遠的一次還是靠傳送傳送到了各大主城樓頂,然後被按回去了。至於東西瘟疫之地的亡靈天災有一說一確實沒有排面,圍攻個聖光之願禮拜堂甚至要出動整個阿徹魯斯還要巫妖王親自參戰,結果還是讓人給錘了回去。並且圍攻冰冠堡壘與突襲黑暗神殿不同,儘管都是斬首行動。...