1. Создайте нормальный класс, содержащий открытый (ые) метод (ы), который должен быть «статическим»
2. Включите открытый метод [в этот «статический» класс], который инициализирует [частные] «статические поля» внутри класса (он может принимать параметры, если хотите)
3. Создание модуля действует как фабрика
Public Function CreateStaticClass(parameters for 'constructor') As StaticClass
Dim static As StaticClass
Set static = New StaticClass
Call StaticClass.Constructor(pass in parameters)
Set CreateStaticClass = static
End Function
4. теперь вы можете использовать «статический» класс, вызывая CreateStaticClass («параметры»). MethodName («параметры»)
нет необходимости инициализировать экземпляр, как это делается методом фабрики
5. (Необязательно) Если вы хотите принудительно применить одноэлементные экземпляры, вы можете создать модуль, который действует как одноэлементный контейнер - включите частную переменную экземпляра и открытое свойство средства доступа. при желании вы можете использовать установщик let, чтобы позволить «заменять» синглтон новым [статическим] классом (используя другие параметры конструктора - см. # 2,3). Используйте «Let» для установки, так что вы можете назначить синглтон без использования «set» ala OO languages
Private curStaticClass as StaticClass
Public Property Get CurrentStaticClass() As StaticClass
If curStaticClass Is Nothing Then Set curStaticClass = CreateStaticClass
Set CurrentStaticClass = curStaticClass
End Property
Public Property Let CurrentStaticClass(value As StaticClass)
If Not (curStaticClass Is Nothing) Then Set curStaticClass = Nothing
Set curStaticClass = value
End Property
6. Чтобы назначить синглтон:
CurrentStaticClass = CreateStaticClass(parameters)
7. Для использования синглтона:
[value = ] CurrentStaticClass.MethodName(parameters)