很明顯,不可變對象應該在大多數時間和任何可能的時候使用。 編輯當不可變對象不能在java中使用時,最好使用mutable?
這裏有一些文章來鼓勵這種做法: https://docs.oracle.com/javase/tutorial/essential/concurrency/immutable.html
- 是簡單的構建,測試和使用
- 是自動線程安全的,並沒有同步問題
- 不需要拷貝構造函數
- 不需要實現克隆
- 允許的hashCode使用延遲初始化,並緩存它的返回值
- 不需要被防守複製爲現場使用時
- 好好地圖鍵和SET元件(這些對象不能改變 狀態,而在收集)
- 有自己的班級不變的構造時建立的一次,它 永遠需要再次檢查
- 始終有「失敗原子」(由約書亞布洛赫所使用的術語):如果一個 不可變對象拋出例外,它從來沒有留在 不受歡迎的或inde終止狀態
http://www.javapractices.com/topic/TopicAction.do?Id=29
但是在那裏場景中不變的對象都不好使用或不能使用某種原因?基於
爲什麼顯而易見的是不可變對象最應該被使用? – Maroun
*然而,有些情況下,不可變對象不適合使用或由於某種原因不能使用*? - 簡單。您的設計阻止您創建實例*不可變*。這一切都歸結於設計。如果你的設計允許你,那麼使實例不可改變,因爲它們可以提高性能並防止不必要的狀態變化 – TheLostMind
帶引號的文本*沒有聲明不可變對象應該用得最多。 – Maroun