第十四条:在公有类中使用访问方法而非共有域
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的引用。