![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Пока что borisbn не показал причин, почему нельзя применить FlyWeightPattern - возможно, главная в том, что придётся переписать весь код. Примеры на C++ применения FlyWeightPattern в описаниях паттерна не очень удачны, они в большинстве они просто переписаны с Java. В Java используется фабрика, которая создаёт объекты с помощью new, а ненужные объекты удаляются сборщиком мусора. В C++ можно создавать объекты и без new - но, да, возможно придётся написать аналог сборщика мусора, которого нет в C++. Если нужно работать одновременно работать с I*J*K объектами Object, то FlyWeightPattern не подойдёт. Но я не могу представить алгоритма, при котором это было действительно нужно. Но если нужно одновременно работать, например, с центральным объектом и его соседями (одновременно нужно 27 Object'ов), то можно пойти на то, что в Object будут храниться его координаты. |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Дело в том, что программа изначально не моя, а опенсоурсная. Мне нужно переделать её для работы с нашим "железом". В оригинальной программе в классе Object хранились индексы, и объект создавался когда было нужно при помощи new. Разница заключается в том, что в оригинальной программе одновременно создавалось не более 16 000 объектов, а в моём варианте будет порядка 1 млрд объектов. Поэтому я и пытаюсь уменьшить размер каждого объекта. В оригинале во всевозможные функции обработки достаточно было передавать указатель на объект, а его индексы можно было спросить у него. Я же не хочу создавать такое кол-во объектов динамически и хочу избавиться от индексов не очень понимаю разницу -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Пока не вижу другой причины отказа от FlyWeightPattern. кроме нежелания (почти) полностью переписывать программу.
Для того, чтобы Вы поняли, что такое FlyWeightPattern, приведу реальный пример его использования в Qt - QItemDelegate. Представьте, что в оригинальной программе вместо QTableView использовались для каждой ячейки QLabel и QLineEdit и Вам надо их заменить на QTableView, TableModel и Delegate - Вам предстоит примерно такой же объем работ. Да, FlyWeightPattern разумно применять вместе с MVC - сначала подумайте, что выделить в модель. |
|||
|
||||
| mes |
|
||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
да со статиком в С++ много путаницы.. что касается нашего случая : статический массив - это массив постоянного размера.. он может располагаться где угодно, не переставая быть от этого статическим.. в С любой массив статический, а динамические массивы получаются "вручную".. динамический это например стд::вектор... память же делится на три категории : статическая, автоматическая и динамическая.. плюс еще бывает со статический по типу связывания... ну и в контексте класса статическое означает совершенно другое.. Добавлено через 2 минуты и 55 секунд так что представляет из себя ячейка ? что в ней хранится ? и какие типы операций над ней проводятся ? Добавлено через 5 минут и 47 секунд
это не совсем то.. Добавлено через 6 минут и 21 секунду также как и причин для его применения Добавлено через 8 минут и 7 секунд
увы по большинству паттернов такая ситуация... пойду гляну чего там за примеры.. Добавлено через 8 минут и 56 секунд
ага тут в самую суть |
||||||
|
|||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
ага обьеденили несколько паттернов в один, и по сути преподносят не сам паттерн, а связку.. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |