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('parameters').MethodName('parameters'). Нет необходимости инициализировать экземпляр, поскольку это делается фабричным методом.
<сильный>5. (Необязательно) Если вы хотите принудительно использовать одноэлементные экземпляры, вы можете создать модуль, который действует как одноэлементный контейнер, включая частную переменную экземпляра и общедоступное свойство доступа. опционально вы можете использовать установщик 'let', чтобы разрешить "замену" синглтона новым [статическим] классом (используя другие параметры конструктора - см. #2,3). Используйте «Let» для установщика, чтобы вы могли назначать синглтон без использования «set» аля языков OO.
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)
person
Matthew Paul Arnold
schedule
16.11.2010