Настраиваемые пользователем структуры данных - PullRequest
2 голосов
/ 20 апреля 2009

предполагается структура данных Персона , используемая для базы данных контактов. Поля структуры должны быть настраиваемыми, чтобы пользователи могли добавлять определенные пользователем поля в структуру и даже изменять существующие поля. Таким образом, в основном должен быть файл конфигурации, такой как

FieldNo  FieldName          DataType           DefaultValue
 0        Name               String             ""
 1        Age                Integer            "0"
 ...

Затем программа должна загрузить этот файл, управлять динамической структурой данных (динамически не способом «изменения во время выполнения», а способом «пользователь может измениться через файл конфигурации») и обеспечивать легкий и безопасный доступ к поля данных.

Я уже реализовал это, сохраняя информацию о каждом поле данных в статическом массиве и сохраняя только измененные значения в объектах.

Мой вопрос: есть ли образец, описывающий эту ситуацию? Я думаю, что я не первый, кто сталкивается с проблемой создания настраиваемого пользователем класса?

Спасибо заранее. Скажите, если вопрос недостаточно ясен.

Ответы [ 3 ]

5 голосов
/ 20 апреля 2009

Я быстро просмотрел «Шаблоны архитектуры корпоративных приложений» Мартина Фолвера и шаблон Отображение метаданных описывает (на первый взгляд) то, что вы описываете.

Выдержка ...

"A Отображение метаданных позволяет разработчикам определять отображения в простой табличной форме, которая затем может обрабатываться общим кодом для выполнения операций чтения, вставки и обновления данных."

НТН

3 голосов
/ 20 апреля 2009

Я предлагаю взглянуть на различный объектно-реляционный шаблон в шаблонах корпоративной прикладной архитектуры Мартина Фаулера, доступных здесь . Это список шаблонов, которые он охватывает здесь.

Лучше всего подходит для вашей проблемы отображение метаданных здесь . Есть другие шаблоны, Mapper и т. Д.

0 голосов
/ 20 апреля 2009

Обычный способ справиться с этим состоит в том, чтобы класс имел список пользовательских записей, каждая из которых состоит из списка пользовательских полей. Информация о конфигурации для этого может быть легко сохранена в таблице базы данных, содержащей идентификатор типа, тип поля и т. Д. Фактические данные затем сохраняются в простой таблице с данными, представленными только как (objectid + field index) / пары строк - преобразовывать строки в реальный тип и обратно при чтении или записи в базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...