一、不可變類(immutable)緩存
建立該類的實例後,該實例的屬性是不可改變的。this
若建立自定義的不可變類,可遵照以下規則:對象
①使用private和final修飾符來修飾該類的屬性;生命週期 ②提供帶參構造器,用於根據傳入參數來初始化類裏的屬性;get ③僅爲該類的屬性設置getter方法,不設置setter方法,由於普通方法沒法修改final修飾的屬性;hash ④如有必要,重寫Object類中hashCode和equals方法。在equals方法根據關鍵屬性來作爲兩個對象相等的標準,除此以外,還應該保證兩個用equals方法判斷爲相等的對象的hashCode也相等。 |
二、可變類table
該類的實例的屬性是可變的。變量
與可變類相比,不可變量類對象在整個生命週期中永遠處於初始化狀態,它的屬性不可改變。所以對不可變類的實例的控制將更簡單。引用
若是類中有引用類型,則要防止改變引用對象的屬性。例如,初始化時new,不用this.xxx = xxx; 返回該對象時new一個相同的對象返回,不能return this.xxx。(String的方法)程序
緩存實例的不可變類:
不可變類的實例的狀態不可改變,能夠方便被多個對象共享。若程序常常須要使用相同的不可變類實例,則應該考慮緩存這種不可變類的實例。由於屢次建立相同對象沒意義,增長系統開銷。