我無法獲得需要不可變類的方案。您是否曾經遇到過此類要求?或者您可以給我們提供任何實際的示例來說明我們應該使用這種模式的情況。
3 回答

森林海
TA貢獻2011條經驗 獲得超2個贊
Joshua Bloch撰寫的有效Java概述了編寫不可變類的幾個原因:
簡單-每個班級僅處于一種狀態
線程安全-因為狀態不能更改,所以不需要同步
以一成不變的風格編寫代碼可以帶來更強大的代碼。想象一下字符串不是一成不變的嗎?任何返回String的getter方法都將要求實現在返回String之前創建一個防御性副本-否則客戶端可能會意外或惡意破壞該對象的狀態。
通常,除非導致嚴重的性能問題,否則使對象不可變是一種好習慣。在這種情況下,可變的構建器對象可用于構建不可變的對象,例如StringBuilder

慕森王
TA貢獻1777條經驗 獲得超3個贊
Java實際上是所有引用之一。有時一個實例被多次引用。如果更改這樣的實例,它將反映到其所有引用中。有時,您根本不想使用它來提高魯棒性和線程安全性。然后,一個不可變的類很有用,因此必須創建一個新實例并將其重新分配給當前引用。這樣,其他引用的原始實例將保持不變。
想象一下,如果Java String
是可變的,它將是什么樣子。
添加回答
舉報
0/150
提交
取消