Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 类依赖关系和层次结构_.net_Class_Class Design - Fatal编程技术网

.net 类依赖关系和层次结构

.net 类依赖关系和层次结构,.net,class,class-design,.net,Class,Class Design,当涉及到理解类编程时,我非常有挑战性(阅读迟钝)。到目前为止,我只写了一些非常基本的类 在VBA和VB6中,我经常看到ClassB只能通过ClassA的方法成为有效对象。例如,ADO记录集只能通过连接对象的方法填充或使用。文件对象仅通过FileSystemObject对象的OpenFile方法有效(不要命名对象对象) 什么理论支配着这种类型的“结构”以及用什么术语来指代它?我假设这与基类和继承不同。在.NET中进行数据库编程时,在创建自己的业务逻辑和数据访问层类时,我可能需要使用这种类型的层次结

当涉及到理解类编程时,我非常有挑战性(阅读迟钝)。到目前为止,我只写了一些非常基本的类

在VBA和VB6中,我经常看到ClassB只能通过ClassA的方法成为有效对象。例如,ADO记录集只能通过连接对象的方法填充或使用。文件对象仅通过FileSystemObject对象的OpenFile方法有效(不要命名对象对象)


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

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

FileSystem {
   File openFile(String path);
}
文件系统是文件的创建者或工厂

我发现将这两条思路分开是很有帮助的:这个对象能做什么?我在哪里可以得到那些对象中的一个

请针对您的问题发表评论:

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


您开始注意到某些代码片段不属于正在创建的类(例如,它涉及大量文件,而不仅仅是一个文件),也不属于希望使用已创建类的类,因为这样代码可能会在多个代码片段中重复(任何想要文件的人)因此,有必要将责任交给某个阶层。啊哈,那是个工厂

Edit:似乎它确实有一个名称,请使用其他答案

它没有真正的名字,如果你调用的方法返回一个特定的对象,它是你想要的类型(即OpenFile方法返回一个File类型的对象)

通常在.Net中,有更多的方法可以获取特定类型的实例,最简单的方法就是说
SomeClass myInstance=new SomeClass()以新建对象

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

所以没有真正的理论来指导这一点,它只是基本的面向对象编程。(或者这将是主导理论)

GJ

你在说什么


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

谢谢。这三个答案在不同方面都有帮助。我并不完全清楚何时、何地以及为什么需要设计这样的类。