Есть коллекция, в которую пользователь может добавлять объекты и удалять их.
Подскажите каким образом можно реализовать функционал отмены/возврата изменений с помощью Ctrl+Z/Ctrl+Y?
Буду благодарен за любые наводки и ссылки.
Классическим решением данной задачи, является применение паттерна команда.
Допустим, в методе Execute()
будет код, который выполняет некоторое полезное действие, а в методе Undo()
будет код, который отменяет это изменение (в вашем случае откат изменений коллекции). Вам необходим стек в который вы будете помещать такие объекты предварительно вызывая у них метод Execute()
и соответственно, по Ctrl+Z вы будете разматывать такой стек, вызывая у операции, которую необходимо откатить, метод Undo()
public class Command
{
public void Execute()
{
// Операция изменения коллекции
}
public void Undo()
{
// Операция отката изменения
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Всем приветПоявилась необходимость работать с данными, которые нужно будет сохранять на жёсткий диск
Делаю регистрацию на сайте в учебных целяхХочу запретить создавать пользователей с одинаковым логином
Здравствуйте! Такая проблемаХочу вывести таблицу результатов примитивного вида: Ниже мой недописанный код
Приветствую! Клепаю 2D игрушку на небезызвестном двигателе Unity3DВозник вопрос сразу же после отрисовки первого уровня