thể trùng lặp:
Design Pattern for Undo Enginemẫu thiết kế tốt nhất cho "undo" tính năng
Nói chung, làm thế nào để bạn đối phó với việc hỗ trợ một "undo" tính năng trong ứng dụng của bạn? Tôi đã từng làm việc trên các ứng dụng web và các ứng dụng dành cho máy tính để bàn, và tôi chưa bao giờ cảm thấy thoải mái với bất kỳ hệ thống "hoàn tác" nào mà tôi đã thực hiện.
Tham khảo [link] này (http://stackoverflow.com/a/5168936/4629101) để triển khai Hoàn tác/Làm lại. –