Я успешно закодировал пасьянс на Java, и теперь меня попросили реализовать отмену / возврат поверх моего дизайна.
Мой план состоял в том, чтобы сохранить список или стек движений, выполненных пользователем, и если пользователь хочет отменить, я бы 1. проверил, может ли пользователь отменить (т.е. есть ходы в списке или стеке), затем 2. отменить последние два хода, которые я сохранил (т.е. ход «от», откуда я переместил карту, и ход «до», куда я переместил карту).
Для повтора я бы просто повторил ходы, в зависимости от того, насколько далеко пользователь выполнил действие отмены (например, если бы они дважды нажали отменить, я бы был, по крайней мере, (размер списка - 4) вниз по моему списку или стеку ).
Думаю, они будут реализованы в таком интерфейсе:
public interface UndoRedo {
void undo();
void redo();
}
Реализую ли я Memento, шаблон проектирования Command или ни то, ни другое? У меня проблемы с пониманием того, как выглядят два шаблона проектирования в контексте отмены / возврата для этой игры. Я также новичок в Java OOP и шаблонах проектирования в целом.
now I have been asked to implement...
если это домашнее задание, см. Как мне задавать домашние вопросы и отвечать на них? - person Fuhrmanator   schedule 05.03.2018