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

对于一些退化类(没有什么作用,只是用来集中实例域,也可认为是Java Bean)。

如果这样的类是公有类,也就是我们希望客户端代码可以访问这些退化类的实例域,不应该直接使用public来暴漏这些数据域,

而是应该私有域和公有设值方法(setter)来代替。这样做的好处是,如果我们一旦需要改变这个退化类的内部结构,客户端

代码所受的影响最小。否则,如何客户端代码直接使用公有的数据域,这样的代码遍布各处,我们再修改退化类,就很困难了。

如果这样的类是包级私有的,或者是私有的内部类,也就是说这个退化类,只有在包内才能使用,或者外部类才能使用,客户端

代码是无法接触到的,直接暴露它的数据域并没有什么本质错误,有时候也是需要这样做的。

公有类永远都不应该暴漏可变的域。虽然还是有问题,但是让公有类暴露不可变的域(final)其危害比较小。

原文地址:https://www.cnblogs.com/wangliyue/p/4459989.html