【问题标题】:Encapsulation good practice [duplicate]封装良好实践[重复]
【发布时间】:2011-06-14 01:13:00
【问题描述】:

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

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

【问题讨论】:

  • 当然,我总是首先将 所有这些 声明为私有。大多数时候他们都这样。这意味着更多的写作,但你的 IDE 可以帮助你。还有“project lombok”,当你注释字段或类时,它会为你生成访问器。

标签: java encapsulation


【解决方案1】:

是的。一般来说,所有变量都应该是私有的(不是受保护的,私有的),并且应该有方法来获取它们的值(并且可能设置它们)如果(并且仅当)你想允许外人这样做。您使用的变量是实现细节,通常包含必须以某种方式的数据。 Getter 和 setter 允许您对数据负责、对其进行验证、对其进行同步等,而不是让一些笨蛋在其中存储随机的东西并可能使您的对象无法使用。

唯一的例外可能是其唯一目的是存储数据的类,因此您可以将其作为一个对象传送,有点像 C/C++ struct。但是随后,您决定不,您不想以任何方式验证、同步、封装该数据......并且稍后改变主意会破坏二进制兼容性(这意味着任何涉及该类的代码都需要重新编译)。在一个小小的私人项目中没什么大不了的;公共框架/API 中的巨大交易。

【讨论】:

    猜你喜欢
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    • 2011-03-09
    • 2015-06-09
    • 2018-12-02
    • 2023-03-23
    相关资源
    最近更新 更多