![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Gugle |
|
||||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 9.12.2005 Репутация: нет Всего: нет |
Доброго времени суток!
Прошу знатоков рассеить мои сомнения. Сначала опишу задачу. Есть несколько классов, описывающих структуру.
Таких структур несколько. МЕТОД ПЕРВЫЙ!
МЕТОД ВТОРОЙ! НО! С эими же самыми данными, т.е. listS1...listS2, мне надо проделывать не только простые операции (причем таких обращений к спискам очень много): - добавление - извлечение - изменение - удаление - и т.д. но и отображать эти списки в таблицах. Для этого я переопределил модель таблицы:
Получилось, что связав таким образом модель списков с моделью в таблицах, я упростил себе работу с отображением, но усложнил себе работу с доступом к самим данным в списках, т.к. теперь для этого надо либо знать ячейку, в которой лежат данные и обращаться к ней по номерам:
либо приводить типы данных
А вот теперь собственно вопросы: 1. Какой из методов менее ресурсоемок? (ведь в памяти придется держать, либо HashMap<Structure1>(), либо TableModelObject(new Structure1())) 2. Если первый метод менее ресурсоемок, то не буду ли я в проигрыше при создании моделей для таблиц? (веть их придется держать в памяти) 3. Если на второй вопрос ответ "да", то как синхронизировать модель списка и модель таблиц? 4. Как в решают такие задачи гуру? (Лирика, но интересно) |
||||||||||
|
|||||||||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 17 Всего: 43 |
Вопрос ваш, на мой взгляд, о применении MVC - Model, View, Controller ( "структура" здесь не при чем и вообще не из лексикона java. Это обьекты. )
Какие модели создавать зависит от многих вещей и "ресурсоемкость" не всегда главная. В вашем случае можно предположить, что "модель списка" - это Model, а "модель таблиц" - это локальная модель View. В общем случае надо создавать и то, и другое. Например, в приложении еще не открыта ни одна таблица, но данные загружаются с сервера. Эти данные укладываются в "модель списка". Загруженные данные можно просматривать разными View (таблица, график). Возможно открыть несколько однотипных View с разными параметрами. Например, одни и те же данные отображать одновременно в двух одинаковых таблицах с разным порядком сортировки. Или с разными фильтрами. Поэтому локальные "модели" имеют смысл.
Главное правило, это обновлять отображаемые данные ( те, что в "модель таблиц" ) через Event Dispatch Thread. Чтобы не было конфликта с перерисовками экрана, инициированными активностью пользователя. Если в целях экономии памяти отказаться от локальных моделей, т.е. чтобы таблица методом getValueAt брала данные из основного хранилища, т.е. "модель списка", то эту модель также надо обновлять через EDT. A это удобно только в случае, если изменения данных идут от пользователя. Они тогда и так уже в EDT. Но это частный случай. Обновления могут асинхронно приходить извне. С сервера, например. PS Для снижение расхода памяти применяют кеш системы. Редко используемые данные автоматически удаляются из памяти (существуют разные правила), а при необходимости подгружаются с локального диска обратно в память. Это сообщение отредактировал(а) COVD - 1.2.2011, 19:58 |
|||
|
||||
| Gugle |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 9.12.2005 Репутация: нет Всего: нет |
Спасибо, COVD.
Я возьму паузу в диалоге. P.S. Если у кого есть еще мысли, я с удовольствием их выслушаю. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |