понедельник, 28 января 2008 г.

Обращение к объекту класса

Предположим, что вам нужно использовать один и тот же объект класса между разными сабами. Допустим, это ядро какого-либо движка. Как его передавать от одного Sub'a другому? Насколько мне известно, существует всего два метода - объявить переменную глобальной либо передавать через параметр. Каждый из методов имеет своим преимущества и свои недостатки. Глобальные перемменные лучше вообще никогда не использовать, а через параметр передавать не очень-то удобно.
Дискуссия, начатая мною, по построению некоторого дерева Sub'ов переросла в некий мастер класс по ООП от Yakov'а (да простят меня программисты Java).
Одно из его предожений мне очень пришлось по вкусу - общаться с объектом класса только при помощи вспомогательной функции:

Public Function getMyClass() As MyClass
If MyClassGlobalVariable Is Nothing Then
Set MyClassGlobalVariable = New MyClass()
End If
Set getMyClass = MyClassGlobalVariable
End Function

Быстренький агент, написанный мною, показал, что 10 000 вызово этой функции занимает всего .015 сек (в тесте объект создается всего-лишь один раз). Таким образом не нужно в начале каждого Sub'a проверять на существование объекта класса. Общение с объектом класса происходит только при помощи функции getMyClass

Комментариев нет: