问题标签 [information-hiding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1354 浏览

c++ - 抽象类的 C++ 工厂方法模式

我必须在 C++ 中实现工厂方法模式。由工厂“组装”的类 (C) 是抽象的,并由其他类 (D) 继承。所以我不希望 C 有一个构造函数。但是要创建 D 的实例,C 必须至少有一个受保护的构造函数。但是有人可能会从 C 派生并以这种方式创建 C 的实例。我不希望这种情况发生。所以我创建了一个受保护的构造函数,它接受一个指向 C 对象的指针以供派生类使用,代码如下。问题是这是否是处理这个问题的正确方法。

0 投票
1 回答
491 浏览

javascript - 使用原型对象时的信息隐藏

在我们的代码库中,我发现许多开发人员使用下划线作为成员变量的首字母来阻止公共使用。通常,更好的做法是声明一个对象的方法可以访问的局部变量,但在我们的例子中,这似乎是不可能的,因为所有方法都是在原型上定义的。这是一个例子。

我们使用原型对象有多种原因,但最引人注目的可能是使用原型链可以轻松继承和覆盖方法。这对我们有好处,因为我们在一个平台上有多个产品,可能希望在覆盖特定功能的同时重用大量 JavaScript。

所以我的问题是,我们如何才能获得原型链的所有好处而不让应该私有的变量可以公开访问?

0 投票
1 回答
107 浏览

css - 搜索引擎如何处理 :target 显示的内容?

对于包含大量内容的页面,我最近开始喜欢使用 css :target 来仅显示所需的内容。代码可能如下所示:

我的问题是双重的:

  1. 现代蜘蛛是否遵循锚链接?
  2. 如果不是,是否只有最后一个 h2 及其下一个兄弟姐妹会被蜘蛛?
0 投票
5 回答
20569 浏览

oop - 信息隐藏和数据抽象的区别?

数据抽象和信息隐藏有什么区别吗?在浏览完此链接中的所有答案后,我更加困惑。 抽象 VS 信息隐藏 VS 封装 找不到任何区别。仅仅是我们可以将一个(信息隐藏)称为目标,而将另一个(抽象)称为过程吗?但这对我来说并没有令人满意的区别。此外,我知道封装是实现抽象过程的技术我在这里吗?请解释确切的区别。

0 投票
2 回答
1093 浏览

java - OOD - 设置一次值,使其无法更改

我试图了解信息隐藏的原理。假设我有一个车辆类,其中包含诸如 getSpeed、setSpeed、getEngine、setEngine、getVIN、setVIN 等方法。为了强制信息隐藏,我不想让客户端类能够 setVIN,因为车辆只有一个 VIN (我可能错了)。我对如何让这个类应用信息隐藏有点困惑。我不想将 setVIN 设为私有。但是您如何设置一次 VIN 并且之后不允许再次设置呢?或者我什至应该那样做?

0 投票
2 回答
580 浏览

c++ - 向类的用户隐藏模板类使用的#include

考虑以下分布在 3 个文件中的代码:

所以我的问题是我想对Foo的用户隐藏Secret ,除非他们明确使用. 通常,这将通过包含in来完成。但是,这是不可能的,因为Foo是一个模板类,我不能将它的定义与它的声明分开。显式模板实例化不是一个选项。 #include "secret.h"secret.hfoo.cpp

最终,我想知道这是否可以通过显式模板实例化以外的方式实现,如果可以,如何实现?谢谢!

0 投票
3 回答
1286 浏览

c++ - C++友元函数/类使用?

C++ 中友元函数/类的真正用途是什么?你能举一个例子,只有friend正确的方法吗?

谢谢

0 投票
2 回答
251 浏览

c++ - 如何对除 T 类以外的所有人隐藏数据

我想要一个A类型,它将其隐藏的数据提供给T类型的对象,但对其他人隐藏该数据。我的 C++ 编译器恰好是 GCC 4.4,但这不重要。为什么这行不通?

顺便说一句,这很好用,只是它无法隐藏数据:

C++ 真的不允许在编译时将友元类指定为模板参数吗?为什么不?如果不是,那么我应该使用什么替代技术来隐藏基准?(如果可能,人们会更喜欢编译时技术。)

请问我这里有什么误解?

(我在这里这里看到了一些相关问题的答案,但要么他们没有回答我的特定问题,要么我不明白他们这样做了。无论如何,也许我完全使用了错误的技术。虽然我仍然对为什么朋友类 T失败,我真正想知道的是如何隐藏数据,无论是与朋友还是通过其他方式。)

谢谢。

0 投票
6 回答
32167 浏览

java - 子类是否从超类继承私有实例变量

子类是否继承私有字段?

这个问题解决了同样的问题,但我不太明白它如何满足下面(看似)矛盾的情况。

http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html

说“子类不继承其父类的私有成员。”

这意味着它既不继承私有实例变量也不继承私有方法,对吗?

但是,如果它从其父级继承公共访问器方法,这将如何工作?它返回一个它不知道存在的实例变量?

此外,我的计算机科学书籍(Baron's AP Computer Science A)对“(子类)从(超类)继承所有私有实例变量和公共访问器方法”的问题有正确答案。

这不是oracle教程的缩影吗?

谢谢你的帮助

0 投票
2 回答
450 浏览

javascript - 在 Handlebars.js 模板中检索私有数组数据

给定这个简单的 JavaScript 结构:

在车把模板中,我希望能够在使用函数name的特定索引处打印对象的属性。privateArrayreturnPrivate

我刚开始使用handlebars.js,所以可能已经有一种标准的方法来做到这一点。或者这可能是试图在模板中构建太多逻辑,并与车把的全部内容背道而驰。