Hy all, 我必须在Classic ASP中创建一个网站,我真的想做一个干净的设计,所以我会尝试将所有内容放在Classes和Models中来模拟ViewModel模式。
所以你能告诉我这个创建对象的方法是否合适,因为我会在任何地方使用它
Class User
Public Name
Public Adress
Public Title
Public Text
Public Rights 'ArrayList of Right objects
Private Sub Class_Initialize()
Initialize
End Sub
Private Sub Class_Terminate()
Dispose
End Sub
Private Sub Initialize()
Name = ""
Adress = ""
Title = ""
Text = ""
Set Rights = Server.CreateObject("System.Collections.ArrayList") ' Arraylist .net
End Sub
Private Sub Dispose()
End Sub
End Class
Class Right
Public Name
Private Sub Class_Initialize()
Initialize
End Sub
Private Sub Class_Terminate()
Dispose
End Sub
Private Sub Initialize()
Name = ""
End Sub
Private Sub Dispose()
End Sub
End Class
然后我这样做来实例化对象:
Dim myUser
Set myUser = New User
'Do some work
Set myUser = nothing 'Dispose the object
欢迎提出任何想法,建议或更正。 感谢帮助。
答案 0 :(得分:2)
VBScript不支持使用参数进行对象实例化,但您可以像这样添加它:
Public Function [New User](name)
Set [New User] = New User
[New User].Name = name
End Function
现在您可以创建一个用户:
Set myUser = [New User]("Arthur Dent")
在初始化期间有要设置的必填字段时有用。
您还可以使用此技术制作复合材料:
Public Function [New PowerUser](name)
Set [New PowerUser] = New User
[New PowerUser].Name = name
Set [New PowerUser].Rights = RightsCollection("PowerUser")
End Function
Public Function [New GuestUser](name)
Set [New GuestUser] = New User
[New GuestUser].Name = name
Set [New GuestUser].Rights = RightsCollection("Guest")
End Function
答案 1 :(得分:1)
它不需要创建额外的函数“Initialize”和“Dispose”,并分别从Class_Initialize()和Class_Terminate()中调用它。 您可以将代码放在类构造函数和析构函数中。
其次,你把你的成员变量公之于众,如果你想让你的经典asp尽可能地面向对象,你应该开始使用getter和setter。 像这样:
Private m_Name
Public Property Get Name()
Name = m_Name
End Property
Public Property Let Name(sName)
m_Name = sName
End Property
使用Rights成员变量,您将获得更多乐趣:)