language-agnostic - 通过信息隐藏进行有效封装的绝妙例子?

标签 language-agnostic oop encapsulation abstraction information-hiding

" 抽象 封装 是互补的概念:抽象关注对象的可观察行为...封装关注引起这种行为的实现...封装最常见通过 信息隐藏 实现,这是隐藏对象的所有不影响其基本特征的 secret 的过程。” - 格雷迪·布奇 面向对象分析与设计

你能告诉我一些通过信息隐藏封装的好处的令人信服的例子吗?

最佳答案

我的第一个 OO 类(class)中给出的示例:

想象一个媒体播放器。它摘要 播放、暂停、快进等概念。作为用户,您可以使用它来操作设备。

您的 VCR 实现了这个接口(interface)和 隐藏 封装 机械驱动器和磁带的详细信息。

当一个新的实现 媒体播放器的到来(比如 DVD 播放器,它使用光盘而不是磁带)它可以替换实现 封装 在媒体播放器中,用户可以像使用 VCR 一样继续使用它(播放、暂停等相同的操作)。

这是 的概念信息隐藏通过抽象 .它允许在用户不必知道的情况下更改实现细节并促进低coupling的代码。

关于language-agnostic - 通过信息隐藏进行有效封装的绝妙例子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/635715/

相关文章:

language-agnostic - 是否有针对这些特定多线程数据结构要求的现有解决方案?

c++ - 覆盖现有类的运算符

c# - 代表的封装问题?

javascript - 这个 javascript 对象字面量表示法有什么问题?

regex - 以任意顺序匹配可选捕获组

configuration - 当新功能需要对代码库进行大量更改时,如何处理功能切换?

language-agnostic - 与按位或运算相反

oop - 用于管理对象依赖关系的设计模式

oop - 术语 WRAPPER 在编程中的使用位置和方式,它有什么帮助?

oop - 为什么分别坚持 get-set 而不是 car.speed() 和 car.speed(55) ?