Вопрос по поводу архитектуры
От: Ivan_Petrovitch  
Дата: 21.09.10 15:58
Оценка:
Здравствуйте. Пишу прогу на Qt (но это не важно).

У нас в системе есть документ, у него есть содержимое и метаданные — данные которые описывают документ (размер, тип, время, владелец, откуда он, куда он). Около 50 столбцов. У документа может быть родитель, т.е. документ может быть вложенный, количество вложений не ограничено. Нам надо отображать документ несколькими способами, это:
1) Показ всех метаданных (здесь не надо искать детей документа)
2) Показ вложенных документов (здесь от документа требуется только название)

Для показа метаданных мы будем использовать QTableView — это вьюха для просмотра моделей с "табличным содержмым". И сделаем класс DocumentMetadataModel, ему будем передавать указатель на документ и он его будет отображать. Для просмотра вложенных документов мы будем использовать QTreeView и нами сделанный класс DocumentChildModel, в него будем тоже передавать указатель на документ. И теперь у нас возникает вопрос производительности/использования памяти. Есть два варианта.

1) Мы сделаем общий класс для документа и в конструкторе он будет доставать все свои метаданные а потом искать всех своих детей и тоже заполнять все их метаданные.
2) Мы сделаем два класса. Первый будет только доставать все свои метаданные, но не искать детей. А второй будет лишь искать своих детей, в конструкторе он будет получать свое название, которое будет отображать в дереве вложенных документов.

Сделал вариант номер 2 — потому что скорость и память. Возник вопрос как правильно поступить в этом случае. В первом варианте мы делаем общий класс который подходит для двух задач, но т.к. выполняет две задачи, то получается что он выполняет лишние действия, во втором случае выигрываем в скорости и памяти. Как поступить в этом случае правильно?


22.09.10 13:06: Перенесено из 'C/C++'
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.