在公有类中使用访问方法而非公有域

作者: 想飞的僵尸 | 来源:发表于2016-07-17 01:36 被阅读179次

第十四条:在公有类中使用访问方法而非共有域


1.简单介绍

这一条的意思是让你这样做:

public class MyObject{
  private int filed01;
  public int getFiled01() {
    return filed01;
  }
  public void setFiled01(int filed01) {
    this.fild01 = filed01;
  }
}

而不要这样做:

public class MyObject{
  public int filed01;
}

2. 原因

如果直接将类中的域暴露为共有域,那么你将失去这个域的控制权。
举个例子,对于上面例子中不好的用法,如果你以后想要在类中记录field01被赋值了多少次和被获取了多少次,你将无法做到,因为你根本不知道它什么时候在外部被获取,什么时候再外部被赋值。

3. 加入一些个人拓展理解(总是觉得不太对,希望得到指正)

一个类要确保对所以域的绝对控制权,我们不应该让任何外部类获取到该类的可变对象的引用。
比如说下面这个类,里面有一个域是一个可变对象,我们应该这样做:

public class MyObject{
  private List<String> list = new ArrayList<>;
  public List<String> getList() {
    return new ArrayList(list);
  }
  public void setList(List<String> list) {
    this.list = new ArrayList(list);
  }
}

这样做,外部将永远也获取不到list的引用。

相关文章

网友评论

    本文标题:在公有类中使用访问方法而非公有域

    本文链接:https://www.haomeiwen.com/subject/tlydjttx.html