私は土木工学アプリケーション用の構造モデリング ツールを作成しています。建物全体を表す 1 つの巨大なモデル クラスがあり、これにはノード、ライン要素、負荷などのコレクションが含まれており、これらもカスタム クラスです。
私はすでに、モデルを変更するたびにディープ コピーを保存する元に戻すエンジンをコーディングしました。ここで、別の方法でコーディングできたのではないかと考え始めました。ディープ コピーを保存する代わりに、対応するリバース モディファイアとともに各モディファイア アクションのリストを保存できるかもしれません。そうすれば、リバース モディファイアを現在のモデルに適用して元に戻したり、モディファイアを適用してやり直したりできるようになります。
オブジェクトのプロパティなどを変更する単純なコマンドを実行する方法は想像できます。しかし、複雑なコマンドはどうでしょうか。たとえば、モデルに新しいノード オブジェクトを挿入したり、新しいノードへの参照を保持するいくつかのライン オブジェクトを追加したりするようなコマンドです。
それをどうやって実装するのでしょうか?
ベストアンサー1
私が見たほとんどの例では、コマンドパターンこのため、元に戻せるすべてのユーザー アクションには、アクションを実行してロールバックするためのすべての情報を含む独自のコマンド インスタンスが与えられます。その後、実行されたすべてのコマンドのリストを維持し、それらを 1 つずつロールバックできます。