• Реализация функциональности многоуровневого undo/redo на примере прототипа электронной таблицы
    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, но, имхо, это нагляднее, чем использовать отдельный файл с классом для действия. Кроме этого, используя менеджер команд вы можете навесить на выполнения команды какие-то специфические события, например перерисовку некоторых компонентво и т.п.
  • Правда Сноудена
    +2
    Да, в некоторых случаях используется помощь технических экспертов — баллистиков, анатомов, тех же it-специалистов. Но не забывайте, что и они могут быть подкуплены, запуганы или получить указ свыше о том, какие результаты нужно записать в отчет. Если в стране вцелом главенствует закон, то и электронная система слежки будет направлена в основном во благо.
    В конце концов, то НКВД в 30-х годах без проблем репрессировало множество людей и без всевозможных электронных систем слежения.

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