问题标签 [data-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.
design-patterns - 平衡关注点分离、实现隐藏和数据传输对象
实现隐藏要求我们向用户隐藏类的内部结构。为了简单起见,让我们声明一下:将 getter/setter 的数量减少到最少。
关注点的分离要求一个类的改变应该只有一个原因。因此,不能让服务层的一个类做服务层的事情,例如将数据保存到数据存储中。
数据传输对象 (DTO) 用于将数据从服务层传输到数据访问层。
为了构建 DTO,在最坏的情况下,我需要读取服务层类的所有成员。这将需要最大数量的 getter,这违反了实现隐藏。
Storable
使用虚拟方法从公共抽象基类派生应该转换为 DTO 的类Dto buildDto()
将违反关注点分离。
你能推荐一些应对这种情况的策略吗?或者在这方面实际上有一个普遍的做法?
java - 抽象是如何实际工作的?如果开发人员可以浏览代码并查看所有内容,那么“隐藏”在现实世界中是如何工作的?
当我读到“您正在使用接口隐藏具体类”时,我感到困惑。因为当应用程序被另一个人使用时,他可以看到整个代码(除非我只公开 Web 服务......这是一个不同的方面,不要在这里混合)?
我同意接口和抽象类有助于很好地设计代码,但据我了解,仅此而已。我无法理解在现实世界中我们如何向他人隐藏东西或增加更多安全性等。
java - 封装=数据隐藏+抽象?
根据geeksforgeeks.org/encapsulation-in-java封装 = 数据隐藏 + 抽象?如果是,那么我可以看到数据隐藏,但这里的抽象在哪里?
有人将此作为封装的示例
有人说这不是封装的例子。ref : https://www.youtube.com/watch?v=tjyZWqJkNpc (而且这个视频中教的人在java方面真的很好,很难相信他会错)
那么什么是真正的封装?
- 数据隐藏+抽象
- 将变量和方法分组到一个单元中
哪个定义是正确的?
(只有当你知道否则忽略这个问题和标签时才回答,因为我是stackoverflow的新手,我不知道你如何提出问题的规则。我只是想消除我的疑虑)
design-patterns - 封装与数据隐藏(它们不一样)
我对封装和数据隐藏的整个术语感到有些困惑。我正在通过重构大师阅读一本书“深入研究设计模式”,当他解释封装是什么时,我认为有些不对劲。
我搜索了一下,发现了一个非常好的解释: https ://stackoverflow.com/a/28614407/11993214 。
他把封装误认为是数据隐藏。从上面的链接阅读答案后,我将其总结为这些定义:
encapsulation
- 当我们将使用这些数据的一段代码、数据和方法分开时,我们将它们打包在一起。
data hiding
- 是一个我们可以做的一切的地方,我们作为私人做,我们正在实施 getter 和 setter 作为我们可以访问这些数据的唯一地方。
但是当我阅读更多时,我变得更加困惑。他提出了一个话题:
Encapsulate what varies
。它有两个子类别 - 封装在方法级别和类级别。例如,它说要重新制作:
进入这个:
我认为这类似于上面链接中的问题的陈述。
Whatever changes encapsulate it. Protecting anything which is prone to change.
,对此的回答是:
(...) And 2, as noted by CommuSoft, isn't really a definition, it's a rule of thumb. And I will add that it's a rule of thumb about when to use data hiding, not encapsulation
所以现在,我从书中得到了这一部分,基于我给出的这个例子,我认为它更有可能是一个封装案例。但是,如果我的想法正确并且它类似于链接主题的引号,那么基于该答案,此示例代码是关于何时使用数据隐藏的经验法则?所以总结一下......如果我正确理解封装和数据隐藏,我真的很困惑。基于我提供的那些例子,我认为这个例子是封装。这是对的吗?如果是,那么它与引号中提到的主题有何不同?
我期待您的回答,如果整个解释不清楚,请给我反馈,我会尽力做得更好。
python-3.x - Python:用星号隐藏输入字符
我正在请求用户输入。我要求输入用户名,然后输入密码。例如
运行时,这当然会如下所示:
我想要的是这样的: