Item 15 16: In public class, uses accessor methods, not public fields

  • 類是package-private的,是要暴露給客戶端的。x和y是public的,也是要暴露給客戶端的。那麼考慮到向後兼容,這兩個變量將永久暴露給客戶端。
  • 並且,在訪問這兩個變量的前後,不能添加任何操作。getter就可以,比如提供一個緩存。
class Point{
    public double x;
    public double y;
}

數組是public的話,可能或被客戶端改變。可以轉換成unModifiableList。

private static final Integer[] integers =new Integer[]{1, 2, 4};
public static final List integetList
            = Collections.unmodifiableList(Arrays.asList(integers));

我們應該儘量少暴露classes,interfaces和成員變量給客戶。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章