Получить команды изменения без изменения коллекции - PullRequest
1 голос
/ 21 января 2011

Возможно, название очень плохо названо, но в любом случае ...

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

Объект 1 -> Объект 2 -> Объект 3

Если я переместлю объект 1, это вызовет изменение в объекте 2, что приведет к изменению в объекте 3, поскольку они зависят друг от друга. Итак ... Мне нужен метод для рекурсивного прохождения иерархической коллекции и сбора изменений, необходимых для перемещения Объекта 1 без фактического изменения коллекции. На полпути через рекурсию было бы неплохо иметь возможность использовать что-то вроде Object1.Location, но оно уже может быть изменено, поэтому я не могу надежно его использовать.

Я чувствую, что существует множество алгоритмов и таких, которые должны выполнять этот тип модификации "на месте". Как майор, не относящийся к CS, я многому не научился такого рода вещам, поэтому я даже не знаю, какие условия поиска искать, чтобы найти «решение». Я помещаю решение в кавычки, потому что я понимаю, что, вероятно, нет прямого решения для моей проблемы, но я просто ищу некоторые хорошие рекомендации / примеры того, как это делается, чтобы заставить мой мозг крутиться.

Может ли кто-нибудь привести некоторые реальные примеры такого рода дел? Заранее спасибо.

1 Ответ

0 голосов
/ 21 января 2011

Хорошо, частью решения может быть шаблон посетителя .Вы можете пройтись по дереву ваших объектов с посетителем и сделать что-то вроде создания «клонированного» дерева, представляющего, что будет результатом того, что вы хотите сделать ...

Можете ли вы привести примерхочешь добиться?

my2c

...