2011-03-24 166 views
0

当涉及到了解类的编程时,我非常困难(阅读迟缓)。到目前为止,我只写了一些非常基本的类。类依赖关系和层次结构

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

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

+0

谢谢。所有这三个答案在不同方面都有帮助。我不清楚什么时候,地点,或者为什么我需要设计类似这样的类。 – HK1 2011-03-24 15:42:26

回答

1

有各种各样的对象创作设计模式,这些都是解决你谈论的那种关系。一个非常简单的这种模式是工厂模式。

FileSystem { 
    File openFile(String path); 
} 

文件系统是一个创造者,或的文件。

我确实发现分开这两个思路有帮助:这个对象可以做什么?我在哪里得到那些对象之一。

为了解决您的评论你的问题:

一些这方面会与经验。指导原则是让每个班级都做好一件事。

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

0

编辑:似乎它有一个名字,去与其他答案..

有没有它的真实姓名,会发生什么情况,该方法调用返回的某个对象,至极是你想要的类型(IE的OpenFile方法返回一个File类型的对象)。

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

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

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

GJ