4

私は Java でソリティア ゲームのコーディングに成功しました。そして今、私の設計の上に元に戻す/やり直しを実装するように求められました。

私の計画は、ユーザーが実行した移動のリストまたはスタックを保存することでした。ユーザーが元に戻したい場合は、1. ユーザーが元に戻すことができるかどうか (つまり、リストまたはスタックに移動があるかどうか) を確認し、2. 逆にします。保存した最後の 2 つの移動 (つまり、カードを移動した "from" 移動と、カードを移動した "to" 移動)。

やり直しの場合、ユーザーが元に戻すアクションをどれだけ下に行ったかに応じて、移動をやり直すだけです (たとえば、元に戻すを 2 回押した場合、少なくとも (リストのサイズ - 4) リストまたはスタックの下になります)。 )。

私はそれらが次のようなインターフェースで実装されると思います:

public interface UndoRedo {
    void undo();
    void redo();
 }

Memento または Command デザイン パターンを実装していますか、それともどちらも実装していませんか? このゲームの元に戻す/やり直しのコンテキストで 2 つのデザイン パターンがどのように見えるかを理解するのに苦労しています。私は Java OOP の初心者でもあり、デザイン パターン全般についても初心者です。

4

3 に答える 3