Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.06;
Скачать: CL | DM;

Вниз

"Разделяемый" массив.   Найти похожие ветки 

 
Kerk ©   (2005-02-23 21:13) [0]

Есть класс TSuperPuperClass
В конструкторе он расчитывает и заполняет массив. В дальнейшем использует его только для чтения.
Соответственно, каждый экземпляр класса имеет свою копию, хотя массивы идентичны.

Хотелось бы съэкономить время и память и использовать всеми экземплярами один массив,
заполненный первым создавшимся.

Есть какие-либо пути реализации кроме MMF (это, имхо, не красиво)?

2PANOV
Ну не знаю я как тему ветки оформить!!! :)


 
Просто Джо ©   (2005-02-23 21:18) [1]

Ну, если ММФ некрасиво...
Можно переменную в секции implementation завести для такого массива. Первый созданный класс инициализирует массив, все последующие экземпляры класса его используют.


 
Anatoly Podgoretsky ©   (2005-02-23 21:18) [2]

Или глобальная переменная, или может быть отдельный объект (в единственном экземляре)наследник класса TObject создаешь в Initialization осбождаешь в Finalization


 
Просто Джо ©   (2005-02-23 21:19) [3]

Или, оформить такой массив в виде класса-Singleton"a.
Это, вроде, покрасивше будет.


 
Просто Джо ©   (2005-02-23 21:21) [4]


> [2] Anatoly Podgoretsky ©   (23.02.05 21:18)

Опоздал, сорри


 
Kerk ©   (2005-02-23 21:25) [5]

[1]-[3]
А не нарушение ли это инкапсуляции?


 
Kerk ©   (2005-02-23 21:25) [6]

Ну.. если других путей нет... то нарушим :)


 
Anatoly Podgoretsky ©   (2005-02-23 21:29) [7]

Не нарушить. доступ к массиву сделай через контроллируемое индексное свойство, при неоюходимости добавь еще ряд свойств для удобства, например получение и изменение размера, можно не свойства а методы.
Посмотри на аналогичный пример - объект Screen


 
DiamondShark ©   (2005-02-23 23:35) [8]


> Kerk ©   (23.02.05 21:25) [5]
> [1]-[3]
> А не нарушение ли это инкапсуляции?

Модуль -- это тоже единица инкапсуляции.


 
Anatoly Podgoretsky ©   (2005-02-24 00:15) [9]

Kerk ©   (23.02.05 21:25) [5]
Если говорить точнее, то усилит, поскольку речь по сути идет о глобальном массиве, то включение его в класс/объект это и есть инкуапсуляция его туда, остается только обеспечить единственную копию, можно административными методами, можно черех скрытие его в классе и получения ссылки черех классовую функцию.
В конце концов важна не инкапсуляция сама по себе, а обеспечение одновременно и глобальности и как бы локальности, через контролируемый доступ и скрытие самого массива в приватной части.



Страницы: 1 вся ветка

Текущий архив: 2005.03.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.067 c
14-1107462722
Тимур
2005-02-03 23:32
2005.03.06
Cd-rom или диски


14-1108389364
Cosinus
2005-02-14 16:56
2005.03.06
Иконки для контактов(изображение телефонов, моб. тел, домов, )...


1-1108562992
AlexG
2005-02-16 17:09
2005.03.06
Пора бы добавить пункты: D2005 и Win2003...


14-1108658569
default
2005-02-17 19:42
2005.03.06
Задачка


9-1102275649
dimodim-modern
2004-12-05 22:40
2005.03.06
вот решил Создать MSG на тему ИГРЫ НА ДЕЛФИ 7 жлсцене