Как стать автором
Обновить
7
0

Пользователь

Отправить сообщение
Спасибо за статью.
В свое время тоже реализовывал undo/redo в десктопной программе на дельфи, а потом по требованию заказчика портировал ее на java под gwt. Интересно, что шел практически также по вашему пути ))).
От себя могу сказать, что лучше не смешивать модель и действия в одном классе. Т.е. у меня было

  • модель, которая предоставляла методы для работы с собой,

  • команды, они же классы действий

  • менеджер команд, который содержит список выполненных команд, а также куда отправляются команды на выполнение

Все это управлялось в контроллере. Таким образом при какой-то обработке на сервере, где undo/redo не нужно, просто используются методы модели.
По поводу того, что отдельные классы для действий раздувают кодовую базу могу сказать, что раздувают они ее не так сильно. Сильно помогают inner классы в джаве. Например, если до undo/redo обработчик действия в контроллере выглядел примерно так

model.setSomething(newValue);

то с undo/redo это выглядит уже так

actionManager.execute(new Action(){
   String oldValue;
   @override 
   public void execute(){
      oldValue = model.getSomething();
      model.setSomething(newValue);
   }   
   @override 
   public void rollback(){
      model.setSomething(oldValue);
   }  
});

Да, вместо 1 строки получилось 12, но, имхо, это нагляднее, чем использовать отдельный файл с классом для действия. Кроме этого, используя менеджер команд вы можете навесить на выполнения команды какие-то специфические события, например перерисовку некоторых компонентво и т.п.
Да, в некоторых случаях используется помощь технических экспертов — баллистиков, анатомов, тех же it-специалистов. Но не забывайте, что и они могут быть подкуплены, запуганы или получить указ свыше о том, какие результаты нужно записать в отчет. Если в стране вцелом главенствует закон, то и электронная система слежки будет направлена в основном во благо.
В конце концов, то НКВД в 30-х годах без проблем репрессировало множество людей и без всевозможных электронных систем слежения.

Я не понимаю, все эти противники электронных систем слежения действительно думают, что после того, как США внедрит эту систему они превратятся в СССР времен 30-х?
На одной шестой части суши на вас можно повесить изначилование и без системы тотальной слежки. Выражение «Рыба гниет с головы» придумали задолго до появления компьютеров. Всем, кто так боится за свои данные, хочу напомнить, что для обвинения вас достаточно не только данных слежки неких навороченных компьютерных систем но и показаний двух (двух, Карл) живых свидетелей.
Хорошего мало. Куда девать дизтопливо — в бензин все не переработаешь.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность