封装要求

Requirement of encapsulation

"Encapsulation is one of the most important features of OOP and is used for data protection" 根据许多书籍和网站。 Wikipedia 同样指出,

Encapsulation is used to hide the values or state of a structured data object inside a class, preventing unauthorized parties' direct access to them.

但是保护什么?是我们自己的无知,确保我们以后不会因为程序太长或其他因素而搞砸吗?

基本上,您封装数据以保护它免受不应修改它的所有内容的影响。例如,考虑 Java 中的私有 class,使用 getter 和 setter。这是基本的封装,因为您只允许以给定的方式读取和修改您的数据,同时保护它免受任何不需要或意外的修改。

封装和 "information hiding" 背后的动机之一是减少耦合,从而降低复杂性,准确地说是圈复杂度,在较大的程序中,它会呈指数级增长,复杂性越高,出现错误的风险就越大.通过防止公开字段的副作用,您可以减少产生错误的可能性。

如果你提供了一些东西,那么就会有人使用它,如果有人使用它,那么你就无法改变它。或者至少如果不找到、彻底理解和测试所有使用它的东西,你就不能改变它。

如果是私有封装,你只需要关心封装范围内的东西,封装范围应该足够小,更容易理解。