как отменить любую функцию - PullRequest
0 голосов
/ 04 ноября 2018

Есть ли способ отменить последнюю функцию / метод, который только что закончил работать?

например, у меня есть функция / метод, который делает это:

isTrue = false
num+=5

и многие другие функции. Каждая функция начинает работать, когда пользователь нажимает определенную кнопку на экране. Пользователь должен иметь возможность отменить свое последнее действие. Есть ли универсальный способ отменить любую функцию, которая только что закончила работать?

Конечно, я могу сделать это так:

 isTrue=true
 num-=5

а что делать если есть много функций? Есть ли простой способ отменить любую функцию (Android)?

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018

Нет встроенной языковой функции, которая позволяла бы отменять все, что изменилось в функции, но есть шаблоны, которые созданы в других, чтобы помочь в подобных ситуациях.

Один из вариантов, который у вас есть, это шаблон сувенира , где вы сохраняете копию предыдущего состояния, так что вы всегда можете вернуться к нему, но одним из недостатков этого является увеличение использования памяти для сохранения всего избыточного состояния, или если вы сохраняете состояние на диске, это приводит к снижению производительности при чтении / записи.

Другой вариант - использование шаблона команды , где каждая команда знает, как отменить себя, таким образом вам не нужно сохранять предыдущее состояние, но вам нужно отслеживать историю команд, что это означает что если у вас много состояний, тогда лучше использовать шаблон команды, потому что вам не нужно сохранять предыдущее состояние, но у вас будет обратная функция, которая знает, чтобы отменить изменения, внесенные этой командой, в то время как если у вас есть только несколько строк, тогда лучше использовать шаблон памяти, особенно если вам нужно разрешить отмену действий даже после того, как приложение будет убито и запущено снова.

Хороший пример использования шаблона команды для отмены с объяснением можно найти здесь .

0 голосов
/ 04 ноября 2018

Я не знаю ни одного языка или платформы, где вы могли бы сделать что-то подобное.

Любой код, выполняемый вашим приложением, каким-либо образом изменяет данные в памяти (создает или уничтожает объекты, изменяет значения и т. Д.). Чтобы отменить изменения, сделанные этим кодом, операционная система должна сохранить полную историю изменений данных, что практически невозможно из-за ограниченных ресурсов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...