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

FormName.WindowState = FormWindowState.Minimized;
5
задан bungrudi 17 November 2009 в 05:52
поделиться

2 ответа

Я бы посоветовал избегать синхронизации двух графиков, но записывать операции редактирования как операции «Удалить узел / Вставить узел / Заменить узел». Отправьте эти операции на сервер и примените их к исходному графу.

Эта идея возникла из переписывания AST (абстрактного синтаксического дерева). В eclipse JDT у вас есть AST из вашего источника . Когда применяется рефакторинг (например, переименование метода), должна быть возможность предварительного просмотра изменений. Для этого записываются события перезаписи (Delte / Insert / Replace), которые применяются к копии AST. Из этого создается предварительный просмотр. Если пользователь соглашается, события применяются к исходному AST.

Ваша проблема аналогична в том смысле, что у вас есть два графа объектов, которые начинаются одинаково и должны быть изменены таким же образом.

4
ответ дан 15 December 2019 в 01:04
поделиться

Я работаю над крупномасштабным проектом с той же (нормальной?) Проблемой. Разработчики реализовали следующее решение, основанное на шаблоне DTO и CMP2:

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

Сам bean-компонент (упрощенный!) Выглядит примерно так:

public TableBean {

  private String column1;

  // ... more fields

  private Set<String> changes = new Set<String>();

  public String getColumn1() {
    return column1;
  }

  public void setColumn1(String value) {
    if (!value.equals(column1)) {
      changes.add("column1");
      column1 = value;
    }
  }

  public Collection<String> getChanges() {
    return changes;
  } 
}

Подотношения обрабатываются соответственно, есть другая структура, которая записывает эти дочерние графы, которые должны быть удалено.

Это может быть даже стандартный шаблон j2ee, прокомментируйте, если это так.

(кроме этого, я предпочитаю решение Арне для новых проектов!)

0
ответ дан 15 December 2019 в 01:04
поделиться
Другие вопросы по тегам:

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