私は Java でソリティア ゲームのコーディングに成功しました。そして今、私の設計の上に元に戻す/やり直しを実装するように求められました。
私の計画は、ユーザーが実行した移動のリストまたはスタックを保存することでした。ユーザーが元に戻したい場合は、1. ユーザーが元に戻すことができるかどうか (つまり、リストまたはスタックに移動があるかどうか) を確認し、2. 逆にします。保存した最後の 2 つの移動 (つまり、カードを移動した "from" 移動と、カードを移動した "to" 移動)。
やり直しの場合、ユーザーが元に戻すアクションをどれだけ下に行ったかに応じて、移動をやり直すだけです (たとえば、元に戻すを 2 回押した場合、少なくとも (リストのサイズ - 4) リストまたはスタックの下になります)。 )。
私はそれらが次のようなインターフェースで実装されると思います:
public interface UndoRedo {
void undo();
void redo();
}
Memento または Command デザイン パターンを実装していますか、それともどちらも実装していませんか? このゲームの元に戻す/やり直しのコンテキストで 2 つのデザイン パターンがどのように見えるかを理解するのに苦労しています。私は Java OOP の初心者でもあり、デザイン パターン全般についても初心者です。