我写了一个类Menu,其中有方法
Public Function Init(Optional ByVal Menu_Id As Long) As Boolean
然后写一个类Struct_HTML
在Struct_HTML中我想有一个属性Menu(这个Menu属性返回Menu对象)
于是我是这样写的:
private mvarMenu_Id As Long
Public Property Get Menu() As Menu
Set Menu = New Menu
If mvarMenu_Id > 0 Then
If Not Menu.Init(mvarMenu_Id) Then
'错误处理:Menu没有正确初始化
End If
Else
ErrMsg = "Struct_HTML尚未初始化"
End If
End Property
请大家给我看看这种方法的合理性和可操作性
因为我的每一个类都是需要进行数据库处理的,所以我想尽可能的让对象在用到的时候才初始化,例如我在get中写上Menu.Init(mvarMenu_Id),而不是在Struct_HTML的初始化函数init(struct_Id)中进行。
现在有个问题时如果我调用的时候:
set obj1= new struct_HTML
if obj1.init(1) then
'此处我的所有的类的init方法的调用格式都一样,返回的都是Boolean表示是否初始化成功
set obj2=obj1.menu
end if
现在对obj2的操作不会出现任何问题
例如:obj2.menuname="haha"
bj2.update
而我这样:
obj1.menu.menuname="haha"
obj1.menu.update
是不能通过的,因为每一次都是重新初始化了一个新的menu实例
请大家讨论一下如果你遇到这种问题,你会用什么方法处理?