【发布时间】:2020-07-21 03:05:34
【问题描述】:
我开始学习 OOP,如果我的 UML 不符合标准,请原谅我(或提供建议)。
由于业务限制,目前正在使用 VBA 编写,因此我无法访问继承,但它确实支持事件和接口。
我有一个文件夹类(蓝色),它有一个 FileSystemObject 类型的对象 mFileSystemObject
Folder 类在一个名为 Files 的数组中保存许多 File 对象。
每个 File 对象都有一个 FileDetails 对象(绿色)。
我想在 FileDetails 类中使用 FileSystemObject 类中的函数。
我想在 Folder 类中使用相同的 FileSystemObject 实例,因为我不想为每个 FileDetails 类实例化一个新实例并填满堆,并且我不会同时做任何工作。
所以我想将引用传递给 FileDetails 类,以便它们都使用同一个。
我能想到的唯一方法是通过 File 对象传递它,即使 File 不会使用它,这看起来有点难看。
我的问题是 - 有没有一种模式可以解决这个“通过”问题 - 我已经在网上搜索并查看了几种设计模式,但他们没有提供任何解决方案的建议。
任何帮助将不胜感激。
非常感谢
尼克
【问题讨论】:
-
您可以实例化一个
FSO类的单例对象,并让它被所有FileDetails对象和所有Folder对象使用。它的行为应该类似于 C# 中的Static对象,但我不知道 VBA 是否允许这样做。 -
你是说你想要一个
FileDetails的单个实例用于整个应用程序吗?所有Files在所有Folders中都使用同一个? -
@ArcherBird,是的。至少这是我的建议。但真正需要尼克说明
-
另外,您可以在 VBA 中采用 OOP 方法! :-)
标签: vba oop design-patterns reference