![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
"Разделяемый" массив.
Kerk © (2005-02-23 21:13:00)Есть класс TSuperPuperClass
В конструкторе он расчитывает и заполняет массив. В дальнейшем использует его только для чтения.
Соответственно, каждый экземпляр класса имеет свою копию, хотя массивы идентичны.
Хотелось бы съэкономить время и память и использовать всеми экземплярами один массив,
заполненный первым создавшимся.
Есть какие-либо пути реализации кроме MMF (это, имхо, не красиво)?
2PANOV
Ну не знаю я как тему ветки оформить!!! :)
Anatoly Podgoretsky (2005-02-24 00:15:00) [1]Kerk © (23.02.05 21:25) [5]
Если говорить точнее, то усилит, поскольку речь по сути идет о глобальном массиве, то включение его в класс/объект это и есть инкуапсуляция его туда, остается только обеспечить единственную копию, можно административными методами, можно черех скрытие его в классе и получения ссылки черех классовую функцию.
В конце концов важна не инкапсуляция сама по себе, а обеспечение одновременно и глобальности и как бы локальности, через контролируемый доступ и скрытие самого массива в приватной части.
DiamondShark (2005-02-23 23:35:00) [2]
> Kerk © (23.02.05 21:25) [5]
> [1]-[3]
> А не нарушение ли это инкапсуляции?
Модуль -- это тоже единица инкапсуляции.
Anatoly Podgoretsky (2005-02-23 21:29:00) [3]Не нарушить. доступ к массиву сделай через контроллируемое индексное свойство, при неоюходимости добавь еще ряд свойств для удобства, например получение и изменение размера, можно не свойства а методы.
Посмотри на аналогичный пример - объект Screen
Kerk (2005-02-23 21:25:00) [4][1]-[3]
А не нарушение ли это инкапсуляции?
Kerk (2005-02-23 21:25:00) [5]Ну.. если других путей нет... то нарушим :)
Просто Джо (2005-02-23 21:21:00) [6]
> [2] Anatoly Podgoretsky © (23.02.05 21:18)
Опоздал, сорри
Просто Джо (2005-02-23 21:19:00) [7]Или, оформить такой массив в виде класса-Singleton'a.
Это, вроде, покрасивше будет.
Просто Джо (2005-02-23 21:18:00) [8]Ну, если ММФ некрасиво...
Можно переменную в секции implementation завести для такого массива. Первый созданный класс инициализирует массив, все последующие экземпляры класса его используют.
Anatoly Podgoretsky (2005-02-23 21:18:00) [9]Или глобальная переменная, или может быть отдельный объект (в единственном экземляре)наследник класса TObject создаешь в Initialization осбождаешь в Finalization