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