元に戻す操作を提供するという私の問題に対する有用な解決策を得ることを期待して、コマンドパターンの実装を開始しています。今、私は特定の問題に直面しています:
操作が含まれる場合のundoの実装はかなり簡単です。数値に5を加算した後、5を減算します。リストにオブジェクトを追加した後、それを削除します。しかし、リストのようなものではなく、全体的な状態がある場合はどうなりますか?
例:クラス内のスレッドに関する情報をモデル化します。
public class ThreadInfo implements Comparable<ThreadInfo> {
final int id;
String name;
int priority;
String state;
int waitCount;
// ...
}
IDなど、特定の情報は変更されません。waitCount
上記のように、元に戻すのは簡単です。減算するだけです。しかし、どうpriority
ですかstate
?これらの情報を元に戻す方法は明確ではありません。
私が思いついた唯一のアイデア:コマンドオブジェクトを初期化するとき、そのオブジェクトの古い状態を保持します:関連するデータをコンストラクターに渡すことによって:
public MyCommand(int priority, String state) {
previousPriority = priority;
previousState = state;
}
ThreadInfo
それとも、現在の最初の要素である状態と優先順位のリストを持っている方が良いでしょうか?