java 封装点

point of java encapsulation

我想弄清楚为什么人们说这是防止访问您不想要的 class 文件的好方法,但我不能只使用反射来访问 class?混淆是不是更好地防止未经授权的访问,因为即使他们使用反射也没有人知道你的代码做了什么?

封装的目的是防止访问您的实现内部 classes 为了更清晰的代码,而不是在技术上阻止您的 [=18] 的用户=] 使用反射访问实例,或反编译它。

例如,如果你有一个 HTTP 客户端,你应该封装你使用的流和缓冲区,并且只将请求和响应暴露给你的 class 的实际用户。这样设计是为了让您和他们的代码更简洁,而不是让他们永远无法反映您的 class。此外,由于唯一 API 用户访问的是外部 API,您可以根据需要自由更改 classes 或代码的内部结构。

封装是一种与其他程序员交流他们应该和不应该对您的数据做什么的方式。他们总能规避这一点,但通过稍微增加难度,你有效地告诉他们在访问封装数据时要格外小心,并警告他们你可能随时更改你的实现并破坏任何依赖它的代码。

封装不是一种类似 DRM 的方法来保护您的代码和数据免受恶意访问。

封装不是为了防止访问后端代码,而是为了表示边界。它可以帮助程序员轻松编写可扩展可修改的代码。从这里开始,像“关注分离”这样的原则将会出现。