Сразу перейду к примеру. Есть объект (пост, заказ и т.д., не важно) у которого есть статусы (новый, отмененый, в обработке и т.д.) и при изменение статуса обычно изменяются зависимые класы (например если заказу меняют статус на оплаченый, тогда сохраняется некая запись об этом событии). И нужно реализовать откат всего этого.
Есть пример отката
на этом сайте, но есть нюанс. Тут происходит полный откат до прежнего состояния, а в моем случае если была сделана история, мне нужно ей не удалять, а отменять. + мне нужно вернуть не просто цифру в поле, какая была, а именно отминусовать то, что сделала команда
execute.
Есть еще вариант, что бы писать
undo для каждой команды отдельно, но тогда выходит много одинакового кода (просто в местах с + меняется на - и т.д.) так как изменение статуса в объекте, может нести изменения в многих класах и можно попросту протупить и написать не правильный
undo на это все.
Не хочу костыли тулить и уверен, что есть хорошее решение, которое мне еще не попалось под руку, так как ситуация не особо уникальная. Заранее всем спасибо