在创建组件时,通常需要在创建时提供对象的初始化。例如,某个组件可能需要提供一个客户对象,而该对象需要预先载入客户数据。
在VB.NET中,可以使用构造函数来完成这项工作。但是,这在VB6种是不可行的。在VB6种,这个过程由一个类厂方法来完成,它使你可以控制对象的创建并对其进行初始化。
下面的例子示范了怎样使用类厂方法来创建对象。它也演示了怎样限制对组件的使用,使用户只能通过类厂方法来创建对象。
首先,创建一个ActiveX DLL项目。添加两个类:ClassFactory和Customer。选择ClassFactory并将实例化属性设置为6--GlobalMultiUse。这使组件的用户在不实例化该对象的情况下就可以访问它的方法。
接下来,选择Customer并将实例化属性设置为2--PublicNotCreatable。这使得组件用户可以访问该对象,但不能创建它。
然后,向Customer类加入以下代码:
Option Explicit
Dim strName As String
Friend Sub Initialize(ByVal Name As String)
strName = Name
End Sub
Public Property Get Name() As String
Name = strName
End Property
然后向ClassFactory类添加以下代码。这就是创建和初始化Customer对象的类厂方法:
Public Function CreateCustomer() As Customer
Dim objCustomer As Customer
Set objCustomer = New Customer
Call objCustomer.Initialize("John Doe")
Set CreateCustomer = objCustomer
Set objCustomer = Nothing
End Function
要想使用该方法,创建一个新项目并设置对刚才ActiveX DLL项目的引用。向新项目中添加如下代码:
Dim objCustomer As Customer
Set objCustomer = CreateCustomer()
Debug.Print objCustomer.Name
Set objCustomer = Nothing
记住在VB6中使用类厂方法来控制对象的创建和初始化。