类依赖性和层次结构

时间:2011-03-24 13:09:19

标签: .net class class-design

在理解用类编程时,我很受挑战(阅读迟钝)。到目前为止,我只写了一些非常基本的课程。

在VBA和VB6中,我经常看到ClassB只能通过ClassA方法成为有效对象。例如,ADO Recordsets仅通过Connection对象的方法填充或可用。 File对象仅通过FileSystemObject对象的OpenFile方法变为有效(永远不要命名对象对象)。

什么理论支配这种类型的“结构”,用什么术语来指代这个?我假设这与基类和继承不同。在.NET中进行数据库编程时,在创建自己的业务逻辑和数据访问层类时,我可能需要使用这种类型的层次结构吗?

3 个答案:

答案 0 :(得分:1)

有各种对象创建设计模式,这些模式正在解决您所谈论的那种关系。一个非常简单的模式是工厂模式。

FileSystem {
   File openFile(String path);
}

文件系统是创建者,或工厂用于文件。

我觉得将这两个思路分开是有帮助的:这个对象可以做什么?我从哪里获得那些对象之一。

解决您对问题的评论:

其中一些将带来经验。指导原则是让每个班级做好一份工作。

您开始注意到某些代码段不属于正在创建的类(例如,它不仅仅是一个文件的大量文件),也不属于想要使用创建的类的类,因为那么代码可能会在许多代码片段中复制(任何想要文件的人),因此需要对某些类负责。啊哈,这是一个工厂。

答案 1 :(得分:0)

编辑:似乎它确实有一个名字,请与其他答案一起使用..

它没有真正的名称,你调用的方法会返回一个特定的对象,它是你想要的类型(IE OpenFile方法返回一个File类型的对象)。

通常在.Net中,有更多方法可以获得某种类型的实例,最简单的方法就是用SomeClass myInstance = new SomeClass();来表示一个对象。

您描述的模式也存在,例如FolderInfo.GetFiles()返回FileInfo对象的数组。

所以没有真正的理论来管理它,它只是基本的面向对象编程。 (或者那将是治理理论)。

GJ

答案 2 :(得分:0)

您在谈论Factory Design Pattern

当您需要从对象本身的功能中抽象出异象创建逻辑时,工厂非常有用。