c# - 数据隐藏是什么意思

标签 c# oop

OOP 最重要的方面之一是数据隐藏。有人可以使用一段简单的代码来解释数据隐藏到底是什么以及我们为什么需要它吗?

最佳答案

Data or Information HidingDavid Paranas提出的设计原则 .

It says that you should hide the design decisions in one part of the program that are likely to be changed from other parts of the program, there by protecting the other parts from being affected by the changes in the first part.

封装是一种能够隐藏数据的编程语言特性。 但是请注意,即使没有封装,您也可以隐藏数据\信息。例如,在非面向对象的编程语言中使用模块或函数。 因此封装不是数据隐藏,而只是实现它的一种手段

在进行封装时,如果您忽略了底层原则,那么您将不会有一个好的设计。例如考虑这个类 -

public class ActionHistory
{
    private string[] _actionHistory;

    public string[] HistoryItems
    {
        get{return _actionHistory; }
        set{ _actionHistory = value; }
    }
}

这个调用封装了一个数组。但它并没有隐藏使用 string[] 作为内部存储的设计决策。如果我们稍后要更改内部存储,它也会影响使用此类的代码。

更好的设计应该是——

public class ActionHistory
{
    private string[] _actionHistory;

    public IEnumerable<string> HistoryItems
    {
        get{return _actionHistory; }
    }
}

关于c# - 数据隐藏是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4327108/

相关文章:

c# - GZipStream 在写入 FileStream 时有效,但不适用于 MemoryStream

javascript - 检查对象是否存在

javascript - 如何正确委托(delegate)类原型(prototype)

c# - 团结跟随领导行为

c# - 如何在数据库优先中创建鉴别器列

c# - 检查 datetime 实例是否落在其他两个 datetime 对象之间

c++ - 使用虚拟方法设计类

c# - 如何在对象中保存 session 变量?

oop - Dart:泛型抽象静态方法

php - 从不同的文件夹自动加载类