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

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

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

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

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

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

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

 

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

posted @ 2015-04-27 13:42  wangliyue  阅读(176)  评论(0编辑  收藏  举报