我有两个对象需要互相交互,一个被称为
我的问题是是否可以使用构造函数来知道创建它的对象(在这种情况下,
为简单起见,请假设以下内容:
Collateral
,另一个被称为Model
。Model
是一个抽象类,由Model_A
、Model_B
和Model_AB
实现。每个Collateral
对象都有一个models
集合作为其属性之一。为了初始化每个Model
,我将需要使用来自Collateral
(还有另一个对象,我们称之为User_Input
)的信息,该信息将随着Model
的实现而变化。我的问题是是否可以使用构造函数来知道创建它的对象(在这种情况下,
Model
构造函数知道哪个Collateral
实例化它)?如果不行,我想有人会建议我使用抽象工厂模式,如果这样的话,它会是什么样子(我担心当涉及到面向对象编程时,我仍然是个新手)?为简单起见,请假设以下内容:
Collateral
具有属性A、B、C、Models_CollectionCollateral
为其创建的每个Models
(在Models_Collection中)调用过程Run
Model
具有名为Run
的公共子,该子在下面的所有类中实现- 过程
Run
操作Collateral
Model_A
需要属性A进行初始化Model_B
需要属性B进行初始化Model_AB
需要属性A、B进行初始化
Collateral
Dim A, B, C as Variant
Dim Model_Collection as Collection
Sub New_Model( Model_Type as String)
Model_Collection.Add(Model_Implementation)
End Sub
Sub Execute_Models()
For Each Model in Model_Collection
Model.Run(Me)
Next Model
End Sub
模型
Sub Run()
End
模型A
Implements Model
Sub Class_Initialize()
'Some code that takes property A from Collateral that Created this object
Sub Run(Collateral as Collateral)
'Some Code
End Sub
模型_B
Implements Model
Sub Class_Initialize()
'Some code that takes property B from Collateral that Created this object
Sub Run(Collateral as Collateral)
'Some Code
End Sub
AB模型
Implements Model
Sub Class_Initialize()
'Some code that takes property A, and B from Collateral that Created this object
Sub Run(Collateral as Collateral)
'Some Code
End Sub
Class_Initialize
不能带参数,并且在类中的任何其他代码之前运行 - 所以你不能将其用作构造函数。 - Mathieu Guindon