盡可能地使每個類或者成員不被外界訪問。
對於成員(域、方法、巢狀類和巢狀介面)有四種可能的訪問級別,下面按照可訪問性的遞增順序羅列出來:
例項域決不能是公有的。
類具有共有的靜態finla舒祖域,或者返回這種域的訪問方法,這幾乎總是錯誤的。
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 thing values() { return private_values.clone();總而言之,你應該始終盡可能地降低可訪問性。你在仔細地設計了乙個最小的共有api之後,應該防止把任何散亂的類、介面和成員變成api的一部分。除了共有的靜態final域的特殊情形之外,共有類都不應該包含公有域。並且要確保公有靜態final域所引用的物件都是不可變的。
使類和成員的可訪問性最小化
要區別設計良好的模組與設計不好的模組,最重要的因素在於,這個模組對於外部的其他模組而言,是否隱藏其內部資料和其他實現細節。設計良好的模組會隱藏所有的實現細節,把它的api與它的實現清晰的隔離開來。然後,模組之間只通過它們的api進行通訊,乙個模組不需要 知道其他模組的內部工作情況。這被稱為資訊隱藏或...
使類和成員的可訪問性最小化
規則1 盡可能的使得每個類或者成員不被外界訪問。頂層的類或者介面,只能是包級私有的或者共有的,如果可能,應該是他們盡可能的包級私有。這樣當你更新 的時候不會影響到它的使用者。否則就需要永遠支援它。如果乙個類只是在某乙個類中被使用,應該考慮將它做成私有巢狀類。成員的控制方法 private 私有的,只...
使類和成員的可訪問性最小化
規則1 盡可能的使得每個類或者成員不被外界訪問。頂層的類或者介面,只能是包級私有的或者共有的,如果可能,應該是他們盡可能的包級私有。這樣當你更新 的時候不會影響到它的使用者。否則就需要永遠支援它。如果乙個類只是在某乙個類中被使用,應該考慮將它做成私有巢狀類。成員的控制方法 private 私有的,只...