Item15 最小化類和成員的可訪問性

2021-09-13 21:44:11 字數 675 閱讀 4340

注意以下幾點:

1.public static final 域要麼包含基本型別,要麼包含不可變物件的引用

2.如果public static final 域包含可變物件的引用,雖然該引用不能修改,但是它所引用的物件卻可以被修改

3.非零長度的陣列是可變型別,所以不能把陣列定義為public static final 域,或者不能提供返回該域的方法。如果有的話,客戶端就能夠修改陣列的內容,從而導致安全漏洞

//以下為錯誤示例

public static final thing values = ;

//正確示例一

private static final thing private_values = ;

public static final listvalues = collections.unmodifiablelist(arrays.aslist(private_values));

//正確示例二

private static final thing private_values = ;

public static final listvalues()

4.public類應該不包含public域

5.訪問許可權:private《預設

使類和成員的可訪問性最小化

要區別設計良好的模組與設計不好的模組,最重要的因素在於,這個模組對於外部的其他模組而言,是否隱藏其內部資料和其他實現細節。設計良好的模組會隱藏所有的實現細節,把它的api與它的實現清晰的隔離開來。然後,模組之間只通過它們的api進行通訊,乙個模組不需要 知道其他模組的內部工作情況。這被稱為資訊隱藏或...

使類和成員的可訪問性最小化

規則1 盡可能的使得每個類或者成員不被外界訪問。頂層的類或者介面,只能是包級私有的或者共有的,如果可能,應該是他們盡可能的包級私有。這樣當你更新 的時候不會影響到它的使用者。否則就需要永遠支援它。如果乙個類只是在某乙個類中被使用,應該考慮將它做成私有巢狀類。成員的控制方法 private 私有的,只...

使類和成員的可訪問性最小化

規則1 盡可能的使得每個類或者成員不被外界訪問。頂層的類或者介面,只能是包級私有的或者共有的,如果可能,應該是他們盡可能的包級私有。這樣當你更新 的時候不會影響到它的使用者。否則就需要永遠支援它。如果乙個類只是在某乙個類中被使用,應該考慮將它做成私有巢狀類。成員的控制方法 private 私有的,只...