История изменений

346
28 февраля 2017, 14:41

Есть коллекция, в которую пользователь может добавлять объекты и удалять их.

Подскажите каким образом можно реализовать функционал отмены/возврата изменений с помощью Ctrl+Z/Ctrl+Y?

Буду благодарен за любые наводки и ссылки.

Answer 1

Классическим решением данной задачи, является применение паттерна команда.

Допустим, в методе Execute() будет код, который выполняет некоторое полезное действие, а в методе Undo() будет код, который отменяет это изменение (в вашем случае откат изменений коллекции). Вам необходим стек в который вы будете помещать такие объекты предварительно вызывая у них метод Execute() и соответственно, по Ctrl+Z вы будете разматывать такой стек, вызывая у операции, которую необходимо откатить, метод Undo()

public class Command
{
    public void Execute()
    {
        // Операция изменения коллекции
    }
    public void Undo()
    {
        // Операция отката изменения
    }
}
READ ALSO
Свой класс для работы с DataTable

Свой класс для работы с DataTable

Всем приветПоявилась необходимость работать с данными, которые нужно будет сохранять на жёсткий диск

344
Регистрация на сайте с помощью ASP.NET MVC C#

Регистрация на сайте с помощью ASP.NET MVC C#

Делаю регистрацию на сайте в учебных целяхХочу запретить создавать пользователей с одинаковым логином

417
Вывод таблицы результатов мини-игры в текстовый файл

Вывод таблицы результатов мини-игры в текстовый файл

Здравствуйте! Такая проблемаХочу вывести таблицу результатов примитивного вида: Ниже мой недописанный код

372
Спрайты, Тайтлы и их разрешение в Unity 3d

Спрайты, Тайтлы и их разрешение в Unity 3d

Приветствую! Клепаю 2D игрушку на небезызвестном двигателе Unity3DВозник вопрос сразу же после отрисовки первого уровня

327