2

我想知道封装类和使类更安全之间的区别。封装提供了与类通信的抽象接口层,对外界隐藏了类的内部工作,同时安全性也具有类似的属性。我们是否可以说每个封装的类都是安全的,但安全类不一定要封装好?请帮助我了解这两者之间的区别。

4

3 回答 3

3

我们可以说每个封装的类都是安全的吗?

不,但封装是迈向安全的第一步。

把你的班级想象成一栋有几十扇窗户的建筑。

在此处输入图像描述

为了完全保护建筑物,您必须覆盖所有开口:不仅是窗户,还有门、屋顶和后门。通过封装,您可以保护您的实现不被直接访问,从而关闭其中一个窗口,但是......还有几十个。

正如许多评论中提到的,安全性是一个非常广泛的术语。你必须做很多事情来声明你的类(和/或应用程序)是安全的。你可以从这些开始:

安全类是否需要被封装?

不会。但是这很难做到,因为在大多数设计模式中都会有某种程度的封装。在这种情况下,您可能会在 Java之外实现安全性(例如,借助操作系统或其他第三方工具)。

于 2013-04-02T10:57:15.383 回答
1

类应该小而简单。这就是我所说的安全类的意思。

为了提高类的可靠性,应该限制其他开发人员对其成员和算法的访问。为了在 OOP 世界中做到这一点,开发人员使用一种称为封装的机制。通过将可见性设置为私有来限制对类元素的访问,我们隐藏了代码如何处理任务的细节。这提高了安全性,因为其他开发人员无法在代码执行期间修改数据。

从我的角度来看,封装和“使类更安全”之间没有区别。通过使用封装,您的类在定义上更加安全。您可以通过引入诸如不可变之类的概念并使用关键字“final”使您的类接近继承机制来扩展这种安全性。

但这更像是一个维基答案和问题,所以没有好的答案。

强烈感谢任何评论。

于 2013-04-02T10:22:20.783 回答
0

封装就是将你的逻辑封装到不同的类中,并在你的代码中调用。

当我们在一个团队中工作时,我们会这样做——一个成员会说调用我的这个方法,你的工作就会完成。. 调用者不必担心执行。

“简单地说,将你的逻辑从你的类中取出并通过一种方法调用它”。

但是要安全地实施它

使用访问修饰符

和最终变量。根据您的需要。

于 2013-04-02T10:27:33.843 回答