引自Bjarne的一篇报道:
封装 - 提供的能力 保证使用抽象 只根据其规格 - 对于捍卫抽象至关重要 反腐败。
有人可以解释一下吗?
由于
答案 0 :(得分:2)
假设您有一个包含公共方法的类,您必须使用它来执行某些操作。类的规范说,为了执行此操作,您必须以特定方式配置类(调用此方法,设置此属性等)。
这种情况的问题在于,可能不清楚需要发生什么或以什么顺序发生。因此,对于大多数开发人员而言,该类的API难以使用并且令人困惑。
使用封装,您可以“封装”不仅仅是类,而是算法,以便在第二个类中使用它。第二个类设置原始类,配置它,并管理它的生命周期。它允许您访问API而无需知道如何正确使用它,因为封装类负责这一点。这有时称为Facade模式。
你的引述还说“对于捍卫反腐败的抽象至关重要。”这意味着当你将一些进程抽象为一个类时,该进程的不同实现不应该要求以不同的方式处理抽象。
例如,您可能有两个报表编写器类的实现。您应该能够完全相同地处理它们中的每一个,而不知道它们是如何实现的(抽象的含义)。但是,如果无法在多线程单元状态(MTA)中运行,则在使用它之前必须“知道”,是时候转换到STA线程了。这个神奇的“知识”是课堂实施所必需的。这是一个“漏洞抽象”。
通过封装,您可以在封装类中防止这种“泄漏”,从而在封装中转换到STA线程,防止抽象泄露其实现的细节。
答案 1 :(得分:0)
这意味着该对象仅授予它需要公开的某些内容,并拒绝您使用它不希望您使用的数据。
最经典的例子是属性: Yout字段将是私有的(或受保护的)。 如果您希望将它们公开以进行读取或写入,则相应地添加一个getter \ setter。