定義不可變類的規則
以下規則定義了用於建立不可變物件的簡單策略。
- 不要提供
setter
方法 - 修改欄位引用的欄位或物件的方法。 - 使所有欄位成為最終和私有。
- 不允許子類重寫方法。最簡單的方法是將類宣告為 final。更復雜的方法是使建構函式私有並在工廠方法中構造例項。
- 如果例項欄位包含對可變物件的引用,則不允許更改這些物件:
- 不要提供修改可變物件的方法。
- 不要共享對可變物件的引用。永遠不要儲存對傳遞給建構函式的外部可變物件的引用; 如有必要,建立副本並儲存對副本的引用。同樣,必要時建立內部可變物件的副本,以避免在方法中返回原始物件。