初学者问题 - 封装和“代理类”

时间:2011-08-18 01:49:45

标签: c# .net encapsulation

在学习c#的过程中,我从阅读其他人的代码中了解到,通过使用某种“代理类”将某些类与程序分离是一种很好的做法。即具有私人数据的那些程序。

例如,假设我的数据库类几乎执行了所有数据库交互。它具有“发送数据”和“读取数据”方法。

我还有一个Manager类,我在其中放置了Database类的私有实例。在此Manager类中,我还包括“从数据库读取数据”和“将数据发送到数据库”方法。所有这些都接受所需的参数并使用它们来运行数据库的读/写方法。

除了一些misc方法,其代码可以很容易地从其他地方运行,Manager的唯一目的是充当程序和Database类之间的信使,以防止数据库需要直接在表单中实例化。

我是在正确的轨道上,还是仅仅通过在表单中​​创建数据库对象并直接从那里运行所有内容来为自己创造更多的工作?

1 个答案:

答案 0 :(得分:1)

我和John Saunders在一起 - 你在某些领域使用这个“正确性”,但不是出于真正的目的。

如您的示例所述,代理类用作抽象。您执行的代码不需要知道有关数据源的任何信息 - 它只是提交数据请求并将数据作为响应返回。代理隐藏了您的实现细节 - 它可以从平面文件,数据库,Web服务中检索数据;真的没关系。这使得您的代码更加灵活,因为它不依赖于特定的数据库实现,并且它还使其可测试,因为您可以在其中注入一些提供测试(“模拟”)数据的其他类。