【发布时间】:2011-01-27 19:55:36
【问题描述】:
我有一个用 VBA 编写的 Access 2007 相对复杂的应用程序(4 个枚举、7 个模块、38 个类模块、86 个表单以及一大堆表和查询)。我发现使用对象工厂设计是有益的,但到目前为止,如果没有在 VB 或 C# 中轻松实现的标准抽象/继承,我无法找到一种干净的方法来实现这种类型的功能。
有没有人有任何在 VBA 中实现工厂设计的经验,甚至有可能吗? ...或者有什么巧妙的“技巧”可以帮助我实现相同的总体目标?
我在工厂设计方面的经验仅限于 C#,而且我从未在 VB 中做过,所以也许 VBA 中有些东西我缺少 VB 的通用性。
示例
我会收到一个具体的日期。根据该日期,我需要计算 2 到 5 个其他日期之间的任何时间。计算这些日期的规则会根据输入日期的“类型”而变化。
因此,如果我的日期是 2009 年 7 月 15 日,这是一个类型 1 的日期,它将返回
日期 1 为 07/15/2010,日期 2 为 07/15/2011,日期 3 为 07/15/2012,日期 4 为 06/10/2012,日期 5 为 07/10/2012
如果我输入相同的日期但将其作为日期类型 2 我会得到 日期 1 为空,日期 2 为空,日期 3 为空,日期 4 为 06/10/2011,日期 5 为 07/10/2011
所以对于每组规则,至少有 3 个可能,最多 6 个(现在这可以随时扩展)我基本上会输入一个开始日期......规则......并返回一个将包含所有日期属性的对象。
希望对你有所帮助。
【问题讨论】:
-
哇!访问 2008 !你是在哪里找到那个东西的 ?见锋利特辑?
-
/facepalm 我的错误。 2007. 至少在我的辩护中,7 和 8 在键盘上是并排的 >
-
这些并不是真正的“工厂”特定的答案,但您可能会发现它们很有帮助:VBA 中的继承和对象创建。简而言之,这是一种痛苦。请参阅:stackoverflow.com/questions/3669270/… 和 stackoverflow.com/questions/1731052/…
-
我认为用不那么抽象的问题你可能会得到更好的答案。我们知道 VBA 在一般情况下不能完全满足您的要求,但是如果您描述一个您想应用“工厂”方法的特定任务,也许老 Access 手可以为您提供建议如何更有效地编写代码。
标签: ms-access vba inheritance abstract-class factory