Что шаблон разработки управления версиями был бы Вы рекомендовать

Вы должны использовать полный document.getElementById(). Если вы найдете это слишком многословным, вы можете использовать jQuery:

$('#' + id)

, или вы могли бы создать псевдоним в верхней части вашего скрипта:

var byID = document.getElementById;
20
задан MatthewFord 17 February 2009 в 17:53
поделиться

4 ответа

Я не думаю, что нет никакого определенного шаблона разработки GoF по сути для управления версиями, потому что там существует много реализаций его.

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

схема базы данных могла преимущественно выглядеть примерно так (Вы видите этот шаблон в большинстве систем Wiki):

+--------------------+ 1     * +-----------------------------+
| VersionableObject  |---------| Diff                        |
+--------------------+         +-----------------------------+
| lastStateContent   |         | difference                  |
| originalAuthor     |         | revision                    |
| #dates and whatnot |         | # userId, dates and whatnot |      
+--------------------+         +-----------------------------+

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

Теперь, если мы говорим о Вашем примере, целое убило объектов, который должен быть сохранен в конфигурациях. Т.е. мы должны выбрать изменения объектов, которые мы хотим для модели. Это означает, что у нас есть многие многим отношения (который решен с посреднической таблицей), вид подобных это:

+---+ 1   * +---------------+ 1   * +-----------------+ *   1 +-------+
| B |-------| Diff          |-------| ModelSelection  |-------| Model |
+---+       +---------------+       +-----------------+       +-------+
            | revisionNo    |       | {PK} configId   |
            | {FK} configId |       | {FK} modelId    |
            +---------------+       +-----------------+

я надеюсь, что это помогает.

7
ответ дан 30 November 2019 в 01:11
поделиться

У Martin Fowler есть некоторые хорошие статьи о time/versioning-based шаблонах разработки - определенно стоящий взгляда:

http://martinfowler.com/eaaDev/timeNarrative.html

10
ответ дан 30 November 2019 в 01:11
поделиться

Я решил эту проблему в направляющих при помощи acts_as_versioned плагин. При применении его к модели это предполагает, что существует model_name_version в дополнение к model_name таблица. Каждый раз, когда модель сохраняется, старая версия наряду с меткой времени копируется в model_name_version таблица.

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

2
ответ дан 30 November 2019 в 01:11
поделиться

Комбинация Шаблон "memento" с Шаблон "наблюдатель" должна соответствовать Вашим потребностям. Также взгляните на Шаблон "посетитель" для возможного приложения в Вашем случае...

1
ответ дан 30 November 2019 в 01:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: