封装好的做法

时间:2011-01-23 14:51:18

标签: java encapsulation

  

可能重复:
  Private vs. Public members in practice (how important is encapsulation?)

最近我遇到过一种情况,我将类变量声明为public,因为它将在另一个类中使用。最近有人告诉我,我应该将这些变量设为私有,并编写一个返回变量值的公共方法。我被告知这是一个很好的做法。我搜索了我的Java书,但没有找到任何参考。我的问题是,将尽可能多的类变量声明为私有是不错的做法?

1 个答案:

答案 0 :(得分:4)

是。通常,所有变量都应该是私有的(不受保护,私有),并且应该有方法来获取它们的值(并且可能设置它们)if(并且仅当时)你想允许外部人员使用它们。您使用的变量是实现细节,通常包含必须以某种方式的数据。 Getters和setter允许您对该数据负责,验证,同步等,而不是让一些Jackass在其中存储随机内容并可能使您的对象无法使用。

唯一的例外可能是 only purpose 是数据存储的类,因此您可以将它作为一个对象发送,有点像C / C ++ struct。但是,你做出的决定是,你不想以任何方式验证,同步,封装数据......然后改变你的想法打破二进制兼容性(意味着任何触及该类的代码都需要被重新编译)。在一个小小的私人项目中没什么大不了的;公共框架/ API中的大量交易。