【问题标题】:Class Dependency and Hierarchy类依赖和层次结构
【发布时间】:2011-03-24 13:09:19
【问题描述】:

在理解类编程方面,我遇到了很大的挑战(阅读障碍)。到目前为止,我只写了一些非常基础的类。

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

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

【问题讨论】:

  • 谢谢。这三个答案在不同方面都有帮助。我不清楚何时、何地或为什么需要设计像这样工作的类。

标签: .net class class-design


【解决方案1】:

有各种各样的对象创建设计模式,这些都是针对你所说的那种关系。一个非常简单的这种模式是工厂模式。

FileSystem {
   File openFile(String path);
}

文件系统是文件的创建者,或 工厂

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

解决您对问题的评论:

其中一些会随着经验而来。指导原则是让每个班级做好一项工作。

您开始注意到某些代码不属于正在创建的类(例如,它涉及很多文件而不仅仅是一个文件)也不属于想要使用创建的类的类,因为那么代码可能会在许多代码段(任何想要文件的人)中重复,因此需要将责任交给某个类。啊哈,那是工厂。

【讨论】:

    【解决方案2】:

    你说的是Factory Design Pattern

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

    【讨论】:

      【解决方案3】:

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

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

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

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

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

      GJ

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-03
        • 1970-01-01
        • 1970-01-01
        • 2012-08-11
        • 1970-01-01
        • 2021-08-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多