831得票12回答
为什么Python的“私有”方法实际上并不是私有的?

在Python中,我们可以通过在方法或变量名前面添加双下划线(如__myPrivateMethod())来创建一个“私有”的方法或变量。那么,如何解释这一特性呢? >>>> class MyClass: ... def myPublicMethod(self)...

186得票22回答
抽象 VS 信息隐藏 VS 封装

您能告诉我软件开发中抽象和信息隐藏之间的区别吗? 我感到困惑。抽象隐藏详细实现,而信息隐藏则抽象了某物的全部细节。 更新: 我找到了一个关于这三个概念的好答案。请参见下面单独的答案,其中引用自此处的几篇文章。

151得票11回答
为什么应该使用“PIMPL”习惯用语?

背景: PIMPL(指向实现的指针)是一种实现隐藏技术,其中一个公共类包装了一个在公共类所属的库之外看不到的结构或类。 这样可以隐藏用户库的内部实现细节和数据。 在实现此惯用法时,为什么要将公共方法放在 pimpl 类上而不是公共类上,因为公共类的方法实现会编译到库中,用户只有头文件? ...

33得票9回答
信息隐藏和封装有什么区别?

信息隐藏和封装之间有什么区别?我读过封装意味着将数据和应该一起操作它们的过程捆绑在一起。如果是这样,那么下面的类是否实现了封装?class IsThisEncapsulation { public int age; public int getAge() { ...

25得票8回答
如何在JPG或GIF照片中隐藏信息?

如何在jpg或gif等图片文件内写入信息,而不破坏图片,并且不在图片上显示该信息?当然,整个想法是为了将信息以不被任何人察觉的方式发送到图片文件中(以在某种程度上提供安全性/隐私保护)!

20得票4回答
命令模式似乎过于复杂(我哪里理解错了?)

我已经研究了命令模式,但感觉好像还有什么不理解。Command对象存在的目的是为了抽象出Receiver对象的细节。在我看来,我们可以停留在这里,仅持有Command对象的引用,在适当的时间执行相应的方法。 那么,为什么还需要Invoker呢?这种额外的间接性提供了什么优势呢?我们已经通过C...

11得票9回答
在C++代码中定义的密码是否可以隐藏?

...以便浏览反汇编代码时不会立即暴露密码(声明为静态变量)。例如,想象一个程序附带了一个zip文件,必须打开其中的资源,但对于窥探者来说并不容易访问。 我知道完全隐藏或保护该zip是不可能的,但我很好奇有哪些手段可以至少阻止偶然的窥视者。 谢谢!

11得票5回答
有效的封装与信息隐藏的杰出例子是什么?

"抽象和封装是相互补充的概念:抽象关注对象的可观察行为... 封装关注产生这种行为的实现...封装通常通过信息隐藏来实现,即隐藏对象所有不贡献到其基本特征的秘密。" - 格雷迪·布奇,《面向对象分析与设计》 你能给我展示一些通过信息隐藏实现封装的强有力的说服例子吗?

11得票5回答
如何在我的项目中实现一个健壮的基于请求的会话模式,同时注重信息隐藏?

我正在构建一个ASP.NET MVC项目,使用NHibernate作为持久化层。 目前已经实现了一些功能,但仅使用本地NHibernate会话:每个访问数据库的方法(读或写)都需要实例化自己的NHibernate会话,并使用"using()"条款。 问题是我想利用NHibernate的延迟...

10得票8回答
在jar文件中隐藏类

是否真的不可能在一个jar文件中隐藏某些类? 我想禁止直接实例化这些类,以使其更加灵活。只有工厂(或门面)应该在此jar中可见。 除了创建两个项目之外,还有其他解决此问题的方法吗? (两个项目:第一个包含类(实现),另一个引用第一个并包含工厂;以后只引用第二个)