2011-01-24 10 views
0

私は、元に戻す/やり直しは通常コマンドパターンによって実装されることを理解しています。 しかし、コマンドがx回繰り返す予定の場合、x回のアンドゥはユーザーにとって面倒です。コマンドのやり直しのやり直し

例えば、私は "int num"を持っています。キーボードの "+"を押すと、プログラムは "++ num"を実行します。ユーザーが "+"を押してnumを0から50に増やした場合、元に戻すことができます。ユーザーは元に戻すことができます。

一連の繰り返しコマンドを処理できるように元に戻しますか?

ありがとうございます!

答えて

0

Monitored Undo Framework(http://muf.codeplex.com)は、操作のバッチの概念を使用してこれを行います。一連の操作をグループに属しているとフラグを立てて、UNDOシステムがUNDO/REDOを作業単位として実行できるようにすることができます。

さらに、ライブラリでは、特定のフィールドの最初/最後の値のみを保存することで状況を最適化できます。そうすれば、元に戻す/やり直しのロジックは50の操作をすべて適用する必要はありません。これは、元に戻すバッチの前の値に戻すだけで元に戻すことができます。

注意:MUFライブラリは従来のコマンドパターンを使用していません。それは、元のドメインモデルで起こった後に変化を追跡し、より多くの思い出パターンを使用します。

本当のコマンドパターンが必要だった場合は、アンドゥスタックのエントリを調べるロジックをアンドゥ実装に追加することができます。次に、例えば、ユーザーが "+"操作で取り消しをヒットした場合、スタックは取り消しを開始し、スタック上で "+"操作を見つけていれば元に戻します。私はイベントをバッチすることができないが、一度に複数の操作を自動的に取り消すように取り消しスタックを望む場合にこの方法を使用しました。

関連する問題